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

Web*_*ner 16 javascript arrays foreach nodelist

您是否看到以下任何问题:

NodeList.prototype.forEach = Array.prototype.forEach;
Run Code Online (Sandbox Code Playgroud)

通常forEach只是数组的属性,但是通过将其设置为所有NodeLists 的属性,在将NodeList循环遍历其节点之前,不需要将a转换为数组forEach.

Zet*_*eta 7

通过原型扩展DOM的功能通常不是一个好主意,特别是在旧版本的IE(文章)中.

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

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){ /* ... */ });
Run Code Online (Sandbox Code Playgroud)

另见MDN:为什么我不能使用forEachmap在...上NodeList.