如果我创建这样的对象:
var obj = {};
obj.prop1 = "Foo";
obj.prop2 = "Bar";
Run Code Online (Sandbox Code Playgroud)
生成的对象总是这样吗?
{ prop1 : "Foo", prop2 : "Bar" }
Run Code Online (Sandbox Code Playgroud)
也就是说,属性是否与我添加它们的顺序相同?
在JavaScript中我可以有一个带孔的数组:
a = [];
a[0] = 100;
a[5] = 200;
a[3] = 300;
a.forEach(function(x) {alert(x);});
Run Code Online (Sandbox Code Playgroud)
我无法找到有关元素是否按升序处理的信息,或者这不是可靠的事实.
我检查了"for .. in"循环以升序遍历数组索引,而对象的属性名称以与添加到对象相同的顺序遍历(至少看起来如此).
(即看起来数组是某种类型的内部树,而对象是哈希表.)
我刚刚发现Rhino JavaScript也遍历了不存在的元素:http: //ideone.com/7Z3AFh(与for..in不同).