Node和Element
- DOM是一棵树,所有节点都是Node
- Node是Element的基类
- Element是其他HTML元素的基类,如HTMLDivElement

代码演示

HTMLCollection和NodeList
- HTMLCollection是Element的集合
- NodeList是Node集合
HTMLCollection
<body>
<p id="p1">
<b>node</b>vs <em>element</em>
</p>
<script>
const p1 = document.getElementById('p1')
console.log(p1.children)
console.log(p1.children instanceof HTMLCollection);
console.log(p1.children instanceof NodeList);
</script>

NodeList
<p id="p1">
<b>node</b>vs <em>element</em>
</p>
<script>
const p1 = document.getElementById('p1')
console.log(p1.childNodes)
console.log(p1.childNodes instanceof NodeList)
console.log(p1.childNodes instanceof HTMLCollection)
</script>

补充
console.log(p1.tagName);
console.log(p1.nodeName);
console.log(p1.nodeType);
划重点
- 获取Node和Element的返回结果可能不一样
- 如elem.childNodes和elem.children不一样
- 前者会包含Text和Comment节点,后者不会
扩展:类数组 -> 数组
- HTMLCollection 和 NodeList 都不是数组,而是类数组
const arr1 = Array.from(list)
const arr2 = Array.prototype.slice.call(list)
const arr3 = [...list]