`this`如何在Javascript中工作?
问题描述:
我不完全了解this
是如何工作的。例如,`this`如何在Javascript中工作?
var logger = {
x: 0,
updateCount: function(){
this.x++;
console.log(this.x);
}
}
现在,从我读过,当updateCount
被称为的logger
属性的this
值应为logger
。那么为什么下面的代码不工作?
document.querySelector('button').addEventListener('click', logger.updateCount);
此外,为什么这样工作?
document.querySelector('button').addEventListener('click', function(){
logger.updateCount();
});
答
在第一个,你传递一个函数作为参数,它在那里被调用。因此,调用者不会是记录器。 “这”取决于来电者。在第二个,你可以看到,你正在从记录器调用函数,所以“this”是记录器。
您可以修改第一个,如下所示,以便将其“this”设置为记录器。
document.querySelector('button').addEventListener('click', logger.updateCount.bind(logger));
尝试读取这里:http://javascriptissexy.com/understand-javascripts-this-with-clarity-and-master-it/ – PaolaG
Developper阅读[这里](HTTPS://developer.mozilla。组织/ EN-US /文档/网络/的JavaScript /参考/运营/本)。 –