类数组对象(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))也不支持这种操作。
学吧,学无止境,太深了