我有一些代码不起作用,我不明白为什么。我把它归结为这个简单的例子:function Load() { this.data = { isLoaded: false, }; this.load1 = function() { console.log(this.data.isLoaded); }; this.system = { load2: function() { console.log(this.data.isLoaded); } };}let a = new Load();a.load1();a.system.load2();为什么 this.data 在 load1 函数中定义,而在 load2 函数中未定义?有没有办法让它与我想要的结构(第二种形式)一起工作?
4 回答
慕容森
TA贡献1853条经验 获得超18个赞
这会起作用。放入调用的this.data函数scope变量中parentData,您可以在任何子项上使用该值。
thisinthis.system.load2引用this.system内容,它不会调用父数据。
function Load() {
this.data = {
isLoaded: false,
};
var parentData = this.data;
this.load1 = function() {
console.log(this.data.isLoaded);
};
this.system = {
load2: function() {
console.log(parentData.isLoaded);
}
};
}
let a = new Load();
a.load1();
a.system.load2();
RISEBY
TA贡献1856条经验 获得超5个赞
我相信这与范围界定有关。
this.data.isLoaded指的是load2的当前范围
this.system = {
load2: function() {
console.log(this.data.isLoaded);
}
};
添加回答
举报
0/150
提交
取消