【发布时间】:2017-02-05 05:38:33
【问题描述】:
我用 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。 -
哦,太好了!你是对的,它奏效了!非常感谢
标签: javascript class oop properties private-functions