javascript - 无法访问对象文字内的 "this"

标签 javascript object this object-literal

我很难理解如何访问位于我创建的对象文字的方法之一内的 this

这是一个例子:

var app = {
  click: function(e) {
    e.preventDefault();
    console.log('Clicked');
    this.saywhat();
  },

  saywhat: function() {  
    console.log('Say what ?');
  }
};

var link = document.querySelector('a');
link.addEventListener('click', app.click);

如果我单击该链接,则会收到此错误:Uncaught TypeError: this.saywhat is not a function。如何使 saywhat()click() 内部可用? (我想找到一个不被迫使用 app.saywhat() 的解决方案)

最佳答案

这是因为事件处理程序中的 this 是注册事件的元素,即 link

在您的情况下,您可以使用 app.saywhat(),或者您可以使用 Function.prototype.bind 显式指定用作 this 的内容。 。也就是说,

link.addEventListener('click', app.click.bind(app));

关于javascript - 无法访问对象文字内的 "this",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30466423/

相关文章:

javascript - Google API 可视化图表不起作用

java - 为什么我们可以使用 'this' 作为实例方法参数?

javascript - 我误解了 JavaScript 中的 "this"关键字

ios - 从对象创建循环转换为在对象创建之间等待的 runBlock

javascript - [object 对象] 是什么意思?

java - java中对象的内存管理

c++ - 声明名为 'this' 的参数时出现语法错误

javascript - 防止圆圈重叠

javascript - 动态加载带有选项卡的表单

javascript - 在 d3 时间轴上显示每隔一个刻度标签?