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

标签 javascript

在下面的基本 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/

相关文章:

javascript - React 函数式组件 - 说它不是一个函数

javascript - 弹出对话框时拦截浏览器上的停止按钮

允许访问 [[Call]] 的 JavaScript 实现

c# - Javascript 在 asp.net 中验证开始日期和结束日期

javascript - 在通过 flex 重新排序时选择视觉上的第一个元素

javascript - 如何在我的 AIR 应用程序中添加对特定 SSL 证书的支持

javascript - jAlert 可以指向任何链接吗?

javascript - 从 Rails Controller 执行 Javascript 函数(无需渲染或重新加载 View )

javascript - 如何在 Sapper 中持久化 UI 组件状态数据?

javascript - 在 jQuery 中更改图像的尺寸