【发布时间】:2016-06-02 05:06:59
【问题描述】:
我猜循环对象的首选方式是这样的:
for (var prop in obj) {
if( obj.hasOwnProperty( prop ) ) {
console.log("obj." + prop + " = " + obj[prop]);
}
}
MDN 是这么说的
已删除、添加或修改的属性 for...in 循环以 任意顺序 迭代对象的属性(请参阅 delete 运算符了解更多关于为什么不能依赖迭代的表面顺序,至少在交叉浏览器设置)。
因此,如果我在迭代期间不修改对象属性,我可以保证正确的顺序,即键/属性出现在对象中的顺序,或者此语句意味着其他什么?
【问题讨论】:
-
没有“正确”的顺序。不应依赖财产顺序。
-
那么循环一个对象时没有办法保证顺序?
-
您可以使用
Object.keys()提取属性名称,然后通过对列表(或任何您想要的)进行排序来施加您自己的顺序。属性本身没有任何顺序。 -
“属性本身没有任何顺序。”啊,这就是为什么。谢谢
-
它说“查看删除操作符”,如果你 follow the link 它说:“所有主流浏览器都支持基于最早添加的属性的迭代顺序首先出现......但是,在这种情况下Internet Explorer(讨厌的东西......)”
标签: javascript object iteration for-in-loop