TL; DR;
Array.prototype.slice.call(nodelist).filter
slice () วิธีการส่งคืนอาร์เรย์ อาร์เรย์ที่ส่งคืนเป็นสำเนาตื้นของคอลเลกชัน (NodeList)
ดังนั้นจึงทำงานได้เร็วกว่าArray.from ()
ดังนั้นจึงทำงานได้เร็วเท่ากับArray.from ()
องค์ประกอบของคอลเลกชันดั้งเดิมจะถูกคัดลอกไปยังอาร์เรย์ที่ส่งคืนดังนี้:
- สำหรับการอ้างอิงอ็อบเจ็กต์ (ไม่ใช่อ็อบเจ็กต์จริง) ให้สไลซ์คัดลอกการอ้างอิงอ็อบเจ็กต์ลงในอาร์เรย์ใหม่ ทั้งอาร์เรย์เดิมและอาร์เรย์ใหม่อ้างถึงวัตถุเดียวกัน หากออบเจ็กต์ที่อ้างอิงเปลี่ยนไปการเปลี่ยนแปลงจะมองเห็นได้ทั้งอาร์เรย์ใหม่และอาร์เรย์เดิม
- สำหรับสตริงตัวเลขและบูลีน (ไม่ใช่ออบเจ็กต์ String, Number และ Boolean) ให้สไลซ์คัดลอกค่าลงในอาร์เรย์ใหม่ การเปลี่ยนแปลงสตริงตัวเลขหรือบูลีนในอาร์เรย์หนึ่งไม่มีผลกับอาร์เรย์อื่น
คำอธิบายสั้น ๆ เกี่ยวกับข้อโต้แย้ง
Array.prototype.slice (beginIndex, endIndex)
- ใช้ args ที่เป็นทางเลือก beginIndex และ endIndex หากไม่ได้จัดเตรียมชิ้นส่วนให้ใช้ startIndex == 0 ดังนั้นจะแยกรายการทั้งหมดออกจากคอลเลกชัน
Array.prototype.slice.call (เนมสเปซ, beginIndex, endIndex)
- ใช้วัตถุเป็นอาร์กิวเมนต์แรก ถ้าเราใช้คอลเลกชันเป็นวัตถุหมายความว่าเราเรียกเมธอด slice โดยตรงจากวัตถุนั้นnamespace.slice ()
babel
แล้ว[...coll]
ก็จะเรียกสำหรับสิ่งที่ไม่ได้เป็นArray.from(coll)
Array