JavaScript array.forEach

时间:2013-06-13 12:30:05

标签: javascript

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

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

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

但是,当数组forEach.call()为空时,我不明白[]执行的原因。

有人可以解释一下这是如何运作的吗?

2 个答案:

答案 0 :(得分:3)

function.call()运行具有不同this的函数。

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

答案 1 :(得分:2)

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

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

的简写