当回调运行以响应事件时,this
函数内部设置为作为事件目标的 DOM 元素。
在您的第一个示例中,匿名函数获取this
目标元素的 ,但不会转发到内部函数this
调用。相反,内部函数根据调用的方式使用 a 运行。(这里,它是一个直接的“原始”调用(即,不作为成员函数调用),所以它在非脚本模式下以equal to运行。)this
this
window
在您的第二个示例中,函数update_percentage
并直接show_hide_targets
获取this
目标元素的。
考虑一个例子:
function sayThis() { alert(this); }
someElem.addEventListener("click", function() { sayThis() });
someElem.addEventListener("click", sayThis);
someElem.addEventListener("click", function() { sayThis.call(this) });
第一个将警报window
(或undefined
在严格模式下);第二个将提醒监听器触发的元素。第三个侦听器使用匿名函数,但它使用 调用内部函数.call(this)
,将原始函数转发this
给内部函数。