0

我正在寻找一个不使用 jQuery 的简单点击事件脚本,并找到了一些有用的代码。有了这个,我创建了我自己的代码变体,它有效,但有一件事我没有得到

[].forEach.call(document.querySelectorAll("a"), function (el) {
    el.addEventListener("click", function (ev) {
        ev.preventDefault();
        this.style.backgroundColor = "grey";
    })
});

此代码抓取<a>网页上的所有 - 元素并添加一个单击事件,将背景颜色更改为灰色。

但是,我不明白为什么forEach.call()在数组[]为空时执行。

有人可以解释这是如何工作的吗?

4

2 回答 2

3

function.call()使用不同的this.

您的代码创建一个空数组来获取该forEach方法(最好编写Array.prototype.forEach,然后调用call()以在类似数组的 NodeList 上调用它。

于 2013-06-13T12:33:49.117 回答
2

虽然[]是一个数组,但我们使用的是forEach在这种类型上公开的原型函数。

这是使用的简写Array.prototype.forEach.call();

于 2013-06-13T12:38:44.547 回答