Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将有序散列数据类型添加到JavaScript是否合理?_Javascript_Hashtable - Fatal编程技术网

将有序散列数据类型添加到JavaScript是否合理?

将有序散列数据类型添加到JavaScript是否合理?,javascript,hashtable,Javascript,Hashtable,我在堆栈溢出和其他地方看到了几个问题,询问如何在Javascript中实现有序哈希、有序对象或有序字典。以下是几个例子: 对我来说,就像官方的ECMAScript规范一样,对象中属性的顺序是“依赖于实现的”,尽管大多数浏览器按照定义属性的顺序循环属性。我可以想象一些程序员测试他们的脚本,看到一切都很好,却没有意识到,在一些情况下,它可能会以意想不到的方式运行,至少在原则上是这样 我的问题是:他们可以更改规范来指定属性的顺序吗?对我来说,这似乎并不太难,但我不知道我是否遗漏了什么。这将鼓励

我在堆栈溢出和其他地方看到了几个问题,询问如何在Javascript中实现有序哈希、有序对象或有序字典。以下是几个例子:

对我来说,就像官方的ECMAScript规范一样,对象中属性的顺序是“依赖于实现的”,尽管大多数浏览器按照定义属性的顺序循环属性。我可以想象一些程序员测试他们的脚本,看到一切都很好,却没有意识到,在一些情况下,它可能会以意想不到的方式运行,至少在原则上是这样

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


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

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

主要浏览器保留条目的顺序可能是为了不破坏不知情的开发人员编写的现有脚本。然而,我可以想象EcmaScript实现的最小内存占用将牺牲这一非标准特性



1例如,在Java中,您可以在和之间进行选择。

针对ECMAScript 5讨论了指定对象属性的枚举顺序,但从我所能收集到的信息来看,由于存在,因此放弃了


这当然是一个合理的愿望,特别是在JSON兴起之后。

我不确定您希望得到什么样的答案。您可以向Ecma International提出有关规格的建议。“这是否合理”对于堆栈溢出来说并不是一个合适的问题。我考虑过这个问题。出于某种原因,我认为他们可能有充分的理由不这么做,我只是好奇为什么。我开始考虑实际接触ECMA只是为了看看他们会说什么。如果我这样做,我可能会在这里发布他们的回复。我会投赞成票。我不确定向ECMA董事会提出想法的流程。我以前在微软有朋友参加标准会议,但我确信这只是为了免费的食物,因为他们肯定从来没有实施过任何标准。@mikez302:这是为ECMAScript 5讨论的。以下是存档中的电子邮件示例: