JS类数组对象和数组的区别 2019-12-05

测试的时候IE遇到一个报错:
TypeError: Object doesn't support property or method 'forEach'

原来NodeList 不是数组而是一个类数组对象,尽管在某些方面和数组非常相似, 而IE不支持NodeList上的forEach方法。

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 方法。

还有一个典型的类数组对象 JavaScript深入之类数组对象与arguments

你可能感兴趣的:(JS类数组对象和数组的区别 2019-12-05)