为什么 NodeList 不是数组?
Posted lguow
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么 NodeList 不是数组?相关的知识,希望对你有一定的参考价值。
//5.element.childNodes 返回元素的一个子节点的数组<br>
console.log(document.body.childNodes); // NodeList。
NodeList 对象在某些方面和数组非常相似,看上去可以直接使用从 Array.prototype 上继承的方法。然而,除了forEach方法,NodeList 没有这些类似数组的方法。
javascript 的继承机制是基于原型的。数组元素之所以有一些数组方法(比如 forEach 和 map),是因为它的原型链上有这些方法,如下:
myArray --> Array.prototype --> Object.prototype --> null (想要获取一个对象的原型链,可以连续的调用 Object.getPrototypeOf,直到原型链尽头).
forEach, map这些方式其实是 Array.prototype 这个对象的方法。
和数组不一样,NodeList的原型链是这样的:
myNodeList --> NodeList.prototype --> Object.prototype --> null
NodeList的原型上除了类似数组的forEach方法之外,还有item,entries,keys和values方法。
以上是关于为什么 NodeList 不是数组?的主要内容,如果未能解决你的问题,请参考以下文章