var arr = Array.prototype.slice.call( htmlCollection )
sẽ có tác dụng tương tự bằng cách sử dụng mã "gốc".
Biên tập
Vì điều này nhận được rất nhiều lượt xem, lưu ý (bình luận của mỗi @ oriol) rằng biểu thức ngắn gọn hơn sau đây có hiệu quả tương đương:
var arr = [].slice.call(htmlCollection);
Nhưng lưu ý mỗi nhận xét của @ JussiR, không giống như biểu mẫu "dài dòng", nó tạo ra một thể hiện mảng trống, không sử dụng và thực sự không sử dụng được trong quy trình. Trình biên dịch làm gì về điều này nằm ngoài ken của lập trình viên.
Biên tập
Kể từ ECMAScript 2015 (ES 6) cũng có Array.from :
var arr = Array.from(htmlCollection);
Biên tập
ECMAScript 2015 cũng cung cấp toán tử trải rộng , tương đương về chức năng Array.from
(mặc dù lưu ý Array.from
hỗ trợ chức năng ánh xạ làm đối số thứ hai).
var arr = [...htmlCollection];
Tôi đã xác nhận rằng cả hai công việc trên NodeList
.
So sánh hiệu suất cho các phương pháp được đề cập: http://jsben.ch/h2IFA
for (var a=[], i=collection.length; i;) a[--i] = collection[i];
vì vậy không có nhiều "con" ở đó :-)