я следующий код:Javascript сфера проблема с объектами (это)
var tradingInterface = function() {
this.json = '';
this.init = function() {
$.get('/whatever',{}, function(data) {
this.json = data;
// Rebuilds Everything
this.rebuildAll();
});
};
this.rebuildAll = function() {
//whatever here
};
};
Почему я получаю в функции инициализации следующую ошибку?
ReferenceError: this.rebuildAll is not defined
this.rebuildAll();
Почему я могу получить доступ к this.json без обзорных проблем, но не this.rebuildAll?
Я написал аналогичный предыдущий поток, но я был перенаправлен на How to access the correct `this`/context inside a callback?, но я не могу заставить его работать правильно.
Как THW нить suggets, я попытался с:
var tradingInterface = function() {
this.json = '';
var self = this;
this.init = function() {
$.get('/whatever',{}, function(data) {
this.json = data;
// Rebuilds Everything
self.rebuildAll();
});
};
this.rebuildAll = function() {
//whatever here
};
};
ошибка исчезает, но функция rebuildAll не делает то, что он должен ...
мне нужна помощь ...
С уважением,
* "Почему я могу получить доступ к this.json без обзорных проблем, но не this.rebuildAll?" * Вы ** назначение ** в 'this.json'. Вы всегда можете назначить свойство объекту (почти всегда). Однако вы ** читаете ** 'this.rebuildAll' и пытаетесь назвать его функцией. Поскольку 'this.rebuildAll' является' undefined', вы не можете его вызывать. * Присвоение * 'this.rebuildAll' будет работать отлично (хотя, конечно, это не то, что вы хотели сделать):' this.rebuildAll = 42; '. –
Вы серьезный человек? Я написал в своем потоке, что я уже прочитал этот поток, и это меня не помогло, прочитал то, что я написал первым, и не закончил в заголовке ... – Egidi
Вы получаете ошибку, потому что 'this' в функции ссылается на объект' window' и не имеет метода 'rebuildAll'. –