JavaScript中的this关键字在addEventListener引用的函数中不起作用的原因是函数的执行上下文发生了改变。在事件处理函数中,this默认指向触发事件的元素,而不是定义函数时的作用域。
为了解决这个问题,可以使用箭头函数来替代普通函数。箭头函数不会创建自己的执行上下文,而是继承外部作用域的this值。这样,在addEventListener中引用的箭头函数中,this将指向定义函数时的作用域。
示例代码如下:
const button = document.querySelector('button');
button.addEventListener('click', () => {
// 在这里使用this,它将指向定义函数时的作用域
console.log(this);
});
在上述示例中,箭头函数作为事件处理函数传递给addEventListener,this将指向定义箭头函数时的作用域,而不是button元素。
需要注意的是,箭头函数不适用于所有情况。如果需要使用事件对象或动态绑定this的功能,仍然需要使用普通函数。
关于JavaScript中的this关键字和箭头函数的更多信息,可以参考以下链接:
领取专属 10元无门槛券
手把手带您无忧上云