1. 程式人生 > >為什麽 NodeList 不是數組?

為什麽 NodeList 不是數組?

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 不是數組?