访问JavaScript根级别对象THIS关键字值

4nkexdtk  于 9个月前  发布在  Java
关注(0)|答案(2)|浏览(77)

下面是我的基本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();
vom3gejh

vom3gejh1#

您正在寻找的是call()apply()。它们都是Function原型的一部分,它们的第一个参数是函数中的this对象。
在你的情况下,你可以这样做:

// ...
init: function() {
  this.cache.cacheFuncOne.call(this);
  alert(this.prop1);
}
// ...

另外,如果你使用ES6,你可以只使用arrow function

6ss1mwsb

6ss1mwsb2#

你可以使用ES6/ES 2015吗?如果是这样,你可以使用箭头函数

cacheFuncOne: () => {
  alert(this.prop1);
},

this将引用具有prop1的对象。
另一种选择是使用bind(this)

cacheFuncOne: function () {
  alert(this.prop1);
}.bind(this),

相关问题