var arr = Array.prototype.slice.call( htmlCollection )
hat den gleichen Effekt mit "nativem" Code.
Bearbeiten
Da dies viele Ansichten erhält, beachten Sie (per @ oriols Kommentar), dass der folgende präzisere Ausdruck effektiv äquivalent ist:
var arr = [].slice.call(htmlCollection);
Beachten Sie jedoch gemäß dem Kommentar von @ JussiR, dass im Gegensatz zum "ausführlichen" Formular eine leere, nicht verwendete und tatsächlich unbrauchbare Array-Instanz erstellt wird. Was Compiler dagegen tun, liegt außerhalb des Ken des Programmierers.
Bearbeiten
Seit ECMAScript 2015 (ES 6) gibt es auch Array.from :
var arr = Array.from(htmlCollection);
Bearbeiten
ECMAScript 2015 bietet auch den Spread-Operator , der funktional äquivalent zu ist Array.from(obwohl beachten Sie, dass Array.fromeine Zuordnungsfunktion als zweites Argument unterstützt wird).
var arr = [...htmlCollection];
Ich habe bestätigt, dass beide oben genannten Arbeiten funktionieren NodeList.
Ein Leistungsvergleich für die genannten Methoden: http://jsben.ch/h2IFA
for (var a=[], i=collection.length; i;) a[--i] = collection[i];also nicht viel von einem "