我不完全理解this
的工作原理。例如,
var logger = {
x: 0,
updateCount: function(){
this.x++;
console.log(this.x);
}
}
现在,根据我的阅读,当this
作为updateCount
的属性被调用时,logger
的值应为logger
。那么为什么下面的代码不起作用呢?
document.querySelector('button').addEventListener('click', logger.updateCount);
另外,为什么这样做?
document.querySelector('button').addEventListener('click', function(){
logger.updateCount();
});
答案 0 :(得分:0)
在第一个中,您将函数作为参数传递,并在那里调用它。因此呼叫者不会是记录器。而“这”取决于来电者。在第二个,如您所见,您正在从记录器调用该函数,因此“this”是记录器。
您可以按如下方式修改第一个,以便将其“this”设置为logger。
return new ArrayList<>(freqMap1.values()).equals(new ArrayList<>(freqMap2.values()));