“this”在Javascript中是如何工作的?
我不完全理解“this”在Javascript中是如何工作的?,javascript,Javascript,我不完全理解这个是如何工作的。比如说, var logger = { x: 0, updateCount: function(){ this.x++; console.log(this.x); } } 现在,根据我所读的,当updateCount被调用为logger的属性时,this的值应该是logger。那么为什么下面的代码不起作用呢 document.querySelector('button').addEventListener('click', logger
这个是如何工作的。比如说,
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”设置为logger
document.querySelector('button').addEventListener('click', logger.updateCount.bind(logger));
试着在这里阅读:发展阅读。