1

为什么 htmlCollection 不从数组继承?我知道 htmlCollection 是一个实时集合,而不是一个快照数组,但它不能仍然从数组继承吗?

有一种将 htmlCollection 转换为 array的明显方法,但这就是转换它。默认情况下并非如此。

更新

这是关于以下评论:

可能重复的HTMLCollection 是一个数组吗?–@winhowes

正如评论中所解释的,这两个问题大相径庭。另一个问题解释了两者之间的区别,我也在上面的问题中写道。我的问题是,为什么 JavaScript 的默认 htmlCollection 不从数组继承。

这两个问题的区别在于,另一个问题是“有什么区别”,我的问题是“为什么有区别”。

4

1 回答 1

0

问: “为什么 htmlCollection 不继承自数组?”


A:那是因为 htmlCollection 与 JavaScript 数组完全无关。第一个是由 DOM 创建的 DOM 对象,后者是由 JS Array 构造函数创建的。与 JS Array 构造函数无关,DOM htmlCollection 自然不会从数组继承任何东西。

htmlCollection长度属性是它们之间唯一的共同属性,然而,与 Aray 长度相反,DOM htmlCollection 属性是只读的。

您最感兴趣的部分可能是 htmlCollection 可以利用 JS 数组公开的大多数方法。并且可以直接赋值给HTMLCollection原型,它的构造函数,正如你自己看到的那样:指向 JS Object 的构造函数。

ps:htmlCollection对象与arguments对象比其他任何东西都更相似, 因为它们都是由 Object 构造函数调用的,而不是由 Array 调用的。

于 2016-05-12T03:52:14.793 回答