1

当向 JavaScript 对象添加属性时,它们是以有序的方式添加的(按字母顺序等)。如果是这样,这是否意味着当您在 JavaScript 对象上查找属性时,会使用像二叉树搜索这样的快速算法?我对此进行了搜索,发现了很多关于原型继承的解释,我已经理解了我只是对如何在原型链的单个级别中查找属性感兴趣。

4

2 回答 2

0

是 v8 如何使用隐藏类的高级描述,然后使用隐藏类定义提供的固定偏移量查找属性值。它还证实了大多数其他实现都使用字典类型的数据对象。

于 2013-04-14T19:27:08.353 回答
0

这完全取决于实施。Google 的 V8 引擎可能与 Firefox 的 JagerMonkey 不同。而且他们几乎可以肯定它与 IE6 不同。在对象中查找属性只是一个接口(程序员称之为相当常见的 Map 接口)。Javascript 唯一能保证你的是接口的方法,没有关于实现的细节,这是一件好事。它可能是一个哈希表(可能),也可能是一个链表(不太可能,但可能),甚至可能是二叉搜索树。

关键是我们不知道它是如何实现的,我们也不应该知道。你不应该对实现做任何假设。就像编程中的抽象一样,假设它很神奇。:)

于 2013-04-14T14:32:22.803 回答