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

时间:2016-12-25 01:01:03

标签: javascript

在我的基本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();




2 个答案:

答案 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),