大家好!
這個問題困擾我很久了,需要麻煩各位專家解惑。
使用 Object.getOwnPropertyNames
取得 Array
的屬性名時,可以取得 length
屬性名:
Object.getOwnPropertyNames([]); // ['length']
然而,使用同方法取得 HTMLCollection
和 Nodelist
的屬性名時,就無法取得 length
屬性名了:
const list = document.querySelectorAll('body');
const coll = document.getElementTagNames('body');
Object.getOwnPropertyNames(list); // ['0']
Object.getOwnPropertyNames(coll); // ['0']
可是,關於 Object.getOwnPropertyNames
的使用,應該會回傳除了 Symbol 的所有屬性名(含不能枚舉)。
我也明白 HTMLCollection
和 Nodelist
不能和 Array
相提並論,但是這樣也太奇怪了,如果不能取得 length
屬性名,那麼 length
作為 HTMLCollection
和 Nodelist
的屬性,又是什麼樣的存在呢?