var arr = Array.prototype.slice.call( htmlCollection )
będzie miał ten sam efekt przy użyciu „natywnego” kodu.
Edytować
Ponieważ uzyskuje się wiele wyświetleń, zwróć uwagę (na komentarz @ oriol), że następujące bardziej zwięzłe wyrażenie jest faktycznie równoważne:
var arr = [].slice.call(htmlCollection);
Zwróć jednak uwagę na komentarz @ JussiR, że w przeciwieństwie do formy „pełnej”, tworzy w tym procesie pustą, nieużywaną i rzeczywiście nieużywaną instancję tablicy. To, co robią kompilatory, jest poza zasięgiem programisty.
Edytować
Od ECMAScript 2015 (ES 6) istnieje również Array. Od :
var arr = Array.from(htmlCollection);
Edytować
ECMAScript 2015 udostępnia również operator rozkładania , który jest funkcjonalnie równoważny Array.from
(chociaż uwaga, która Array.from
obsługuje funkcję odwzorowania jako drugi argument).
var arr = [...htmlCollection];
Potwierdziłem, że obie powyższe prace działają NodeList
.
Porównanie wydajności wymienionych metod: http://jsben.ch/h2IFA
for (var a=[], i=collection.length; i;) a[--i] = collection[i];
tak mało „