类数组对象(array-like objects)

以NodeList对象为例展开:

NodeList是由一些元素节点组成的一个集合,比如我们通过document.getElementByTagName()或document.querySelectorAll()方法,又或者Node.childNodes属性返回而获得的。

它是一个典型的类数组对象,具有数组的一些特征,但是,它和数组又是完全两个类型的对象,所以我们叫他们为array-like objects;

NodeList对象的原型链:

NodeList->nodeList.prototype->object.prototype->null(要想获取一个对象的原型链,可以连续的调用object.getPrototypeOf,直到原型链尽头。)

Array对象的原型链:

array->array.prototype->object.prototype->null

在nodeList.prototype中我们发现了和数组中相似的forEach方法,除此之外,还有item,entries,keys和values方法。

如果我们想要把它变成一个数组对象,一个直接的办法就是把array.prototype上的方法添加到nodeList.prototype上。但是直接扩展DOM对象是很危险的,有些低版本浏览器(Internet Explorer(6,7,8))也不支持这种操作。

原文地址:https://www.cnblogs.com/zhangxin123/p/13645801.html