2011-12-14 25 views
2

我在堆棧溢出和其他地方看到了幾個問題,詢問如何在Javascript中實現有序散列,有序對象或有序字典。下面是幾個例子:將有序散列數據類型添加到JavaScript會合理嗎?

對我來說,它appears喜歡根據官方的ECMAScript規範,在一個對象的屬性的順序是「實現相關」,儘管大多數瀏覽器按照它們定義的順序遍歷屬性。我可以想象一些程序員測試他們的腳本並看到一切正常,不知道,至少在原則上,它可能在幾種情況下以意想不到的方式行事。

我的問題是這樣的:他們可以改變規範來指定屬性的順序嗎?對我來說,它似乎不會太難,但我不知道我是否錯過了一些東西。這將鼓勵少數瀏覽器的製作者去做別人所做的事情,並添加一個有用的功能。他們基本上會說JavaScript解釋器應該做大多數JavaScript解釋器所做的事情。我無法想象像這樣的變化會導致任何類型的兼容性問題。

如果這不是一個現實的選擇,爲什麼不呢?我沒有任何直接的實際目標。我試圖滿足我的好奇心,爲什麼語言是這樣的。

+1

我不確定你期待什麼作爲答案。您可以向Ecma International提出有關規格的建議。 「這是否合理」對Stack Overflow來說不是一個合適的問題。 – pimvdb 2011-12-14 21:58:09

回答

2

存儲散列表的成本比保留訂單的散列表的成本少。我想這是規範允許我們忽略命令的原因之一。

主要瀏覽器正在保存條目順序可能不會破壞由不知道的開發人員編寫的現有腳本。然而,我可以想象EcmaScript實現的內存佔用量最小,會犧牲這種非標準功能。


例如,在Java中,您可以選擇HashMapLinkedHashMap

相關問題