我在不使用jQuery的情况下搜索一个简单的单击事件脚本,并找到了一些有用的代码。有了这个我创建了我自己的代码变体,它有效,但有一件事我没有得到
[].forEach.call(document.querySelectorAll("a"), function (el) {
el.addEventListener("click", function (ev) {
ev.preventDefault();
this.style.backgroundColor = "grey";
})
});
此代码抓取网页上的所有<a>
- 元素,并添加一个点击事件,将背景颜色更改为灰色。
但是,当数组forEach.call()
为空时,我不明白[]
执行的原因。
有人可以解释一下这是如何运作的吗?
答案 0 :(得分:3)
function.call()
运行具有不同this
的函数。
您的代码创建一个空数组以获取forEach
方法(最好编写Array.prototype.forEach
,然后调用call()
在类似数组的NodeList上调用它。 / p>
答案 1 :(得分:2)
虽然[]
是一个数组,但我们正在使用此类型公开的原型函数forEach
。
这是使用Array.prototype.forEach.call();