首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NodeList.prototype.forEach = Array.prototype.forEach;

NodeList.prototype.forEach = Array.prototype.forEach;
EN

Stack Overflow用户
提问于 2013-03-07 17:21:15
回答 4查看 5.2K关注 0票数 17

您是否发现以下方面存在任何问题:

代码语言:javascript
复制
NodeList.prototype.forEach = Array.prototype.forEach;

通常,forEach只是数组的一个属性,但是通过将它也设置为所有NodeList的属性,在使用forEach遍历其节点之前,不需要将NodeList转换为数组。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-03-07 17:38:04

通过原型扩展DOM的功能通常不是一个好主意,尤其是在旧版本的IE (article)中。

但是,即使不将其添加到原型链或将NodeList转换为数组,您也可以简单地使用Array.prototype.forEach

代码语言:javascript
复制
var list = document.querySelectorAll(".some.query");
Array.prototype.forEach.call(list, function(el){ /* ... */ });

/* or */
var forEach = function(ctn, callback){
    return Array.prototype.forEach.call(ctn, callback);
}
forEach(list, function(el){ /* ... */ });

另请参阅MDN:Why can't I use forEach or map on a NodeList

票数 7
EN

Stack Overflow用户

发布于 2016-08-28 22:38:35

如果你正在开发一个将被其他人使用的库,那么这样做并不是一个好主意。

如果这只是你自己的代码(即..一个网站),那么我想这没什么大不了的。不过,你可能应该保护它,因为在未来,浏览器将原生支持NodeList.prototype.forEach (Chrome已经支持)。

代码语言:javascript
复制
if (!NodeList.prototype.forEach) {
  NodeList.prototype.forEach = Array.prototype.forEach;
}
票数 2
EN

Stack Overflow用户

发布于 2013-12-04 01:17:41

正如Zeta提到的,最好使用一个方便的函数。然而,这个版本将允许您为其提供上下文。

代码语言:javascript
复制
var forEach = function(list, callback, context){
  return Array.prototype.forEach.call(list, callback, context);
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15267295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档