可能重复:
Chrome and probably Opera sort object properties automatically
我有一个非常简单的代码:
var obj = {3:'a',2:'b',1:'c'};
console.log(obj);
在Firefox 4.0.1中,它返回:
Object { 3="a", 2="b", 1="c"}
在Chrome 11.0.696.71中,它返回:
Object { 1="c", 2="b", 3="a"}
我如何强制Chrome不会对此对象进行排序?
答案 0 :(得分:4)
对于对象,规范是不保留元素的顺序。换句话说,javascript不保证对象属性的任何特定顺序。
如果要保留元素的顺序,则必须使用数组。在这种情况下,您的对象可以重写为:
var arrobj = ['c','b','a'];
或
var arrobj = ['a','b','c'].reverse();
您考虑到第一个元素索引将为0(零)
答案 1 :(得分:3)
这是铬的已知“错误”/特征。即便是jQuery的作者也对此感到愤慨,但是铬家伙仍然不灵活,说这是一个“功能”: http://code.google.com/p/chromium/issues/detail?id=883 [1]
作为一种解决方法,使用数组或某种MixedCollection(如在extjs中)或类似的东西。
null !== true and also null !== false // in php and js it's so
[1]:John Resig(jeresig)是jquery的作者