向JavaScript添加有序哈希数据类型是否合理?

时间:2011-12-14 21:55:13

标签: javascript hashtable

我在Stack Overflow和其他地方看到了几个问题,询问如何在Javascript中实现有序散列,有序对象或有序字典。以下是一些例子:

对我而言,appears根据官方ECMAScript规范,对象中属性的顺序是“依赖于实现”,尽管大多数浏览器按照定义的顺序循环遍历属性。我可以想象一些程序员测试他们的脚本并看到一切正常,但不知道,在少数情况下,它可能会以意想不到的方式表现,至少在原则上是这样。

我的问题是:他们可以更改规格以指定属性的顺序吗?对我来说,它似乎不会太难,但我不知道是否我错过了什么。这将鼓励剩下的少数浏览器的制造商做其他人做的事情,并添加一个有用的功能。他们基本上会说JavaScript解释器应该做大多数JavaScript解释器所做的事情。我无法想象这样的改变会导致任何类型的兼容性问题。

如果这不是一个现实的选择,为什么不呢?我没有任何直接的实际目标。我试图满足我的好奇心,为什么语言就是这样。

2 个答案:

答案 0 :(得分:3)

为ECMAScript 5讨论了指定对象属性的枚举顺序,但由于我可以收集found to be no de facto standard across browsers而被删除。

这肯定是一种合理的愿望,尤其是自JSON的崛起以来。

答案 1 :(得分:2)

存储哈希表比使用保留顺序 1 的哈希表花费更少的内存。我想这是规范允许人们忽略订单的原因之一。

主流浏览器保留条目顺序可能不会破坏由不知情的开发人员编写的现有脚本。但是,我可以想象EcmaScript的实现具有最小的内存占用,这将牺牲这种非标准功能。


1 例如在Java中,您可以选择HashMapLinkedHashMap