Я полностью запутался между объектом Node и объектом Element.
document.getElementById()
возвращает объект Element, а document.getElementsByClassName()
возвращает объект NodeList (набор элементов или узлов?)
Если div является объектом Element, то как насчет объекта div Node?
Что такое объект-узел?
Являются ли объект документа, объект элемента и текстовый объект также объектом узла?
Согласно книге Дэвида Фланагана «Объект документа, его объекты-элементы и текстовые объекты — все это объекты Node».
Так почему же объект может наследовать свойства/методы объекта Element, а также объекта Node?
Если да, то я предполагаю, что класс узла и класс элемента связаны в прототипном дереве наследования.
<div id="test">
<p class="para"> 123 </p>
<p class="para"> abc </p>
</div>
<p id="id_para"> next </p>
document.documentElement.toString(); // [object HTMLHtmlElement]
var div = document.getElementById("test");
div.toString(); // [object HTMLDivElement]
var p1 = document.getElementById("id_para");
p1.toString(); // [object HTMLParagraphElement]
var p2 = document.getElementsByClassName("para");
p2.toString(); //[object HTMLCollection]