naiwny sposób byłoby to zrobić, jeśli testowany na Chrome:
NodeList.prototype.forEach = Array.prototype.forEach;
To działa. W Webkit. Nie dotyczy to jednak Firefoksa. Bo FF zwraca HTMLCollection ...
Najbardziej sposób przeglądarki Znalazłem:
NodeList.prototype.forEach = HTMLCollection.prototype.forEach = Array.prototype.forEach;
To nie działa w IE8 i obniżyć chociaż, ponieważ dusić podczas dodawania właściwości do organizacji obiektów prototypy.
Pełna lista:
NodeList.prototype.forEach = HTMLCollection.prototype.forEach = Array.prototype.forEach;
NodeList.prototype.map = HTMLCollection.prototype.map = Array.prototype.map;
NodeList.prototype.filter = HTMLCollection.prototype.filter = Array.prototype.filter;
NodeList.prototype.reduce = HTMLCollection.prototype.reduce = Array.prototype.reduce;
NodeList.prototype.reduceRight = HTMLCollection.prototype.reduceRight = Array.prototype.reduceRight;
NodeList.prototype.every = HTMLCollection.prototype.every = Array.prototype.every;
NodeList.prototype.some = HTMLCollection.prototype.some = Array.prototype.some;
Lub, aby zadowolić naszego drogiego BERGI (a także dlatego, że jest czystsze):
['forEach', 'map', 'filter', 'reduce', 'reduceRight', 'every', 'some'].forEach(
function(p) {
NodeList.prototype[p] = HTMLCollection.prototype[p] = Array.prototype[p];
});
Zważywszy link do perfectionkills, to w większości nieistotne tam. Problem polega na tym, że DOM w większości nie zachowuje się tak samo w przeglądarkach po rozszerzeniu. Ta modyfikacja jest poprawna we wszystkich przeglądarkach z wyjątkiem IE < = 8.
Dlaczego wszyscy przydzielić tablicę ('[]') zamiast używania 'Array.prototype.forEach'? –