ความแตกต่างระหว่างประเภทของอาเรย์เทียมใน JavaScript

ความแตกต่างระหว่างประเภทของอาเรย์เทียมสองประเภท อยู่ที่พฤติกรรมที่ต่างกันเมื่อ DOM elements เปลี่ยนแปลง ตัวอย่างเช่น สมมติว่าเราได้รับ collection ของ paragraph ในรูปแบบ HTMLCollection และในรูปแบบ NodeList จากนั้นเราสร้างและเพิ่ม paragraph อีกหนึ่งอัน เข้าไปใน DOM ของเรา ในกรณีนี้ มันจะปรากฏขึ้นโดยอัตโนมัติ ใน HTMLCollection แต่ collection NodeList จะยังคงไม่เปลี่ยนแปลง

มาดูตัวอย่างกัน สมมติว่าเรามี div และในนั้นมี paragraph รับ div ของเราและ paragraph เดียวกัน ในรูปแบบ collection สองประเภทที่ต่างกัน:

javascriptlet parent = document.querySelector('div');
let elems1 = document.getElementsByTagName('p'); // HTMLCollection
let elems2 = document.querySelectorAll('p');     // NodeList

เพิ่ม paragraph อีกหนึ่งอันเข้าไปใน div ของเรา:

javascriptlet p = document.createElement('p');
parent.append(p);

ผลลัพธ์คือ collection หนึ่งจะเปลี่ยนแปลง แต่ส่วนที่สองจะไม่:

javascriptconsole.log(elems1); // 4 paragraph - พร้อมอันใหม่
console.log(elems2); // 3 paragraph เริ่มต้น
Задание 1

ตรวจสอบว่าคุณสมบัติ children จะมีพฤติกรรมอย่างไรเมื่อเพิ่ม element ใหม่

Задание 2

ตรวจสอบว่าคุณสมบัติ childNodes จะมีพฤติกรรมอย่างไรเมื่อเพิ่ม element ใหม่