“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));
试着在这里阅读:发展阅读。