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