var arr = Array.prototype.slice.call( htmlCollection )
akan memiliki efek yang sama menggunakan kode "asli".
Edit
Karena ini mendapat banyak pandangan, perhatikan (per @ oriol's komentar) bahwa ungkapan yang lebih ringkas berikut ini secara efektif setara:
var arr = [].slice.call(htmlCollection);
Tetapi perhatikan per komentar JussiR, bahwa tidak seperti bentuk "verbose", itu membuat contoh array kosong, tidak digunakan, dan memang tidak dapat digunakan dalam proses. Apa yang dilakukan kompiler tentang hal ini adalah di luar ken programmer.
Edit
Sejak ECMAScript 2015 (ES 6) ada juga Array.from :
var arr = Array.from(htmlCollection);
Edit
ECMAScript 2015 juga menyediakan operator spread , yang secara fungsional setara dengan Array.from
(meskipun catatan yang Array.from
mendukung fungsi pemetaan sebagai argumen kedua).
var arr = [...htmlCollection];
Saya telah mengkonfirmasi bahwa kedua hal di atas berfungsi NodeList
.
Perbandingan kinerja untuk metode yang disebutkan: http://jsben.ch/h2IFA
for (var a=[], i=collection.length; i;) a[--i] = collection[i];
jadi tidak banyak "penipu" di sana :-)