在下面的基本 JavaScript 对象示例中,我经常如何构建我的 JavaScript 项目。我正在寻求帮助。
在我的 TestApp.init()
函数中,我调用这个函数 this.cache.cacheFuncOne();
这是另一个在另一个名为缓存
。
在 this.cache.cacheFuncOne();
中,我尝试访问主对象 this.prop1
上的属性,结果未定义。
当我从嵌套在另一个对象中的不深一层的其他函数访问 this.prop1
时,它会按预期工作并显示值。
所以我开始意识到,在 cache{}
对象中,this
关键字与根上的 this
的值不同水平对象。
基于这个简单的演示,我将如何访问下面 cache{}
对象中的根级 this
值?
var TestApp = {
prop1: 'property1',
init: function() {
this.cache.cacheFuncOne();
alert(this.prop1);
},
funcOne: function() {
},
funcTwo: function() {
},
cache: {
cacheFuncOne: function() {
alert(this.prop1);
},
}
}
TestApp.init();
最佳答案
您正在寻找的是 call()
或 apply()
.它们都是 Function
的一部分的原型(prototype),它们的第一个参数是将成为函数内部的 this
的对象。
所以在你的情况下,你可以这样做:
// ...
init: function() {
this.cache.cacheFuncOne.call(this);
alert(this.prop1);
}
// ...
另外,如果你使用 ES6,你可以只使用 arrow function .
关于javascript - 访问 JavaScript 根级对象 THIS 关键字值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41317997/