Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript array.forEach_Javascript - Fatal编程技术网

JavaScript array.forEach

JavaScript array.forEach,javascript,Javascript,我正在搜索一个不使用jQuery的简单点击事件脚本,并找到了一些有用的代码。有了这个,我创建了我自己的代码变体,它可以工作,但有一件事我没有得到 [].forEach.call(document.querySelectorAll("a"), function (el) { el.addEventListener("click", function (ev) { ev.preventDefault(); this.style.backgroundColor

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

[].forEach.call(document.querySelectorAll("a"), function (el) {
    el.addEventListener("click", function (ev) {
        ev.preventDefault();
        this.style.backgroundColor = "grey";
    })
});
此代码捕获网页上的所有
-元素,并添加一个将背景颜色更改为灰色的单击事件

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

有人能解释一下它是如何工作的吗?
函数。call()
使用不同的
this
运行函数

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

函数。call()
使用不同的
this
运行函数


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

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


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

的简写,虽然
[]
是一个数组,但我们使用的是该类型上公开的原型函数
forEach


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

的简写,解释了很多,谢谢。这解释了很多,谢谢。只需要一些关于性能的注释…querySelectorAll()返回活动节点列表,因此每次访问时它都会重新运行查询。最好先将其转换为数组,然后再使用forEach。此外,如果要在单击时设置链接样式,可以始终在CSS中使用:active。链接的样式设置已完成,以便我可以在web控制台中的任何页面上运行它。@Broxzier Fair:)关于性能的几点说明…querySelectorAll()返回活动节点列表,因此每次访问时它都会重新运行查询。最好先将其转换为数组,然后再使用forEach。此外,如果要在单击时设置链接样式,可以始终在CSS中使用:active。链接的样式设置已完成,以便我可以在web控制台中的任何页面上运行它。@Broxzier Fair:)谢谢你的解释。谢谢你的解释。