Firefox 21(Nightly) でオブジェクトのキー順序がES.nextで提案されているものに

今まで、FirefoxのJSエンジン、SpiderMonkeyでは、オブジェクトのキーの順序は定義された順だった。

var o = {
  2: 0,
  3: 1,
  a: "A",
  1: 2,
};
o[0] = 0;

for (var key in o) {
  console.log(key + ":" + o[key]);
}
2: 0
3: 1
a: A
1: 2
0: 0

という感じ。

いつからか、細かいところは知らないけど、Firefox 21で確認したところ、順序がECMAScript.nextで提案されている順序に変更されていた。strawman:enumeration [ES Wiki]

これは、0を含む自然数(uint32)になりえるキー("2" なら 2 に変換可能)なら、その順に、他は定義順にしようというもの。

よって Firefox 21からは

0: 0
1: 2
2: 0
3: 1
a: A

という順に並び替えられますよと。

この辺り、ECMAScript仕様で定義されて無かったと思う、各実装任せだったわけだけど、仕様として入ってくると嬉しいですね(何が