在我的基本JavaScript对象示例中,我经常构建我的JavaScript项目。我正在寻求帮助。
在我的TestApp.init()
函数中,我将此函数称为this.cache.cacheFuncOne();
,这是另一个在另一个名为cache
的对象内更深一层的函数。
在this.cache.cacheFuncOne();
内部,我尝试访问主对象this.prop1
上的属性,导致未定义。
当我从其他非深层嵌套在其他对象中的函数访问this.prop1
时,它会按预期工作并显示该值。
所以我开始意识到在cache{}
对象中,this
关键字与根级别对象上的this
的值不同。
基于这个简单的演示,我如何访问下面this
对象中的根级cache{}
值?
var TestApp = {
prop1: 'property1',
init: function() {
this.cache.cacheFuncOne();
alert(this.prop1);
},
funcOne: function() {
},
funcTwo: function() {
},
cache: {
cacheFuncOne: function() {
alert(this.prop1);
},
}
}
TestApp.init();

答案 0 :(得分:2)
您要找的是call()
或apply()
。它们都是Function
原型的一部分,它们的第一个参数是函数内的this
对象。
所以在你的情况下,你可以这样做:
// ...
init: function() {
this.cache.cacheFuncOne.call(this);
alert(this.prop1);
}
// ...
此外,如果您使用ES6,则可以使用arrow function。
答案 1 :(得分:1)
您可以使用ES6 / ES2015吗?如果是这样,你可以使用箭头功能
cacheFuncOne: () => {
alert(this.prop1);
},
this
将使用prop1
引用该对象。
另一种选择是使用bind(this)
cacheFuncOne: function () {
alert(this.prop1);
}.bind(this),