Я закодировал класс в JavaScript, и я пытаюсь изменить одно из моих общедоступных свойств внутри частной функции.Javascript изменить общедоступные свойства из частных функций
Вот пример моего кода:
MyClass = function(callback){
this.tabs = [];
var tabs_callback = function(){};
this.setTabsCallback = function(callback) {
tabs_callback = callback;
}
var _doStuff = function(callback) {
// doing stuff
this.tabs = [1, 2, 3];
console.log("Inside doStuff");
console.log(this.tabs);
tabs_callback();
}
this.doStuff = function() {
_doStuff();
}
}
var myObject = new MyClass();
myObject.setTabsCallback(function() {
console.log("Inside callback");
console.log(myObject.tabs);
});
myObject.doStuff();
И вот что я получаю в консоли:
Inside doStuff
[ 1, 2, 3 ]
Inside callback
[]
Почему я не в состоянии видеть мою модификацию от функции обратного вызова?
Вероятно сфера применения 'this'. В верхней части функции «MyClass» (возможно, строка выше 'this.tabs = [];') создайте переменную 'var self = this;' и используйте 'self' вместо' this', где вы хотите доступ к публичным свойствам. – jonhopkins
О, отлично! Вы правы, это сработало! большое спасибо –