NodeList.prototype.forEach = Array.prototype.forEach;
arrays, foreach, javascript, nodelist
Solution
It's often not a good idea to extend the functionality of DOM through prototypes, especially in older versions of IE (article).
However, you can simply use `Array.prototype.forEach` even without adding it to the prototype chain or converting your `NodeList` into an array:
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){ /* ... */ });
See also MDN: Why can't I use `forEach` or `map` on a `NodeList`.
Problem
Do you see any problems with the following: ``` NodeList.prototype.forEach = Array.prototype.forEach; ``` Normally `forEach` is just a property of arrays, but by setting it as a property of all `NodeList`s as well, there's no need to convert a `NodeList` to an array before you can loop through its nodes with `forEach`.