"this"在 JavaScript 中指的是什么?



我编写了一个函数,为匹配特定选择器的所有元素添加侦听器,如下所示:

//  Add event handler to all elements match a specific selector
function addEventListenerToAll(selector, type, listener)
{
[].forEach.call(document.querySelectorAll(selector), function(element) {
if (element) {
element.addEventListener(type, listener);
}
});
}

然后按如下方式调用函数:

addEventListenerToAll(".myclass", "click", function () {
var url = this.getAttribute('myurl');  // What is 'this' refers to?
});

那么this. getattribute中的this是什么指的是?

根据我的测试,指向foreach循环中的一个元素。然而,我检查了这个文档https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this,它在"Class context"中说,'this'在非静态函数中指的是当前类对象,否则,它默认为全局对象,在浏览器中,它应该是窗口对象。

因此,由于侦听器函数不是类成员函数,它应该引用window而不是?

函数可以被赋予不同的this作用域,而不是默认的。您可以使用apply方法自己完成此操作。(编辑:正如@pilchard在下面指出的,这不适用于继承父作用域的箭头函数。)在事件侦听器中,this是指事件侦听器应用于的元素(currentTarget)。

参考:https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener the_value_of_this_within_the_handler

相关内容

  • 没有找到相关文章

最新更新