下面是我的基本JavaScript对象示例,以了解我通常如何构建我的JavaScript项目。
在我TestApp.init()
函数中,我将这个函数称为this.cache.cacheFuncOne();
,它是另一个函数,在另一个名为cache
的对象中更深一层。
在this.cache.cacheFuncOne();
内部,我试图访问主对象this.prop1
上的属性,结果是undefined。
当我从其他函数访问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();
2条答案
按热度按时间vom3gejh1#
您正在寻找的是
call()
或apply()
。它们都是Function
原型的一部分,它们的第一个参数是函数中的this
对象。在你的情况下,你可以这样做:
另外,如果你使用ES6,你可以只使用arrow function。
6ss1mwsb2#
你可以使用ES6/ES 2015吗?如果是这样,你可以使用箭头函数
this
将引用具有prop1
的对象。另一种选择是使用
bind(this)