for...in循环

2012-09-11 00:19

for...in循环

by 司徒正美

at 2012-09-10 16:19:00

original http://www.cnblogs.com/rubylouvre/archive/2012/09/10/2678885.html

以前提到过for...in循环在IE下有BUG,不能遍历出Object的默认原型方法,如toString, valueOf什么的。这次发现它们在遍历顺序上还有不同。IE、火狐、Safari浏览器的JavaScript 解析引擎遵循的是较老的ECMA-262第三版规范,属性遍历顺序由属性构建的顺序决定,而Chrome、Opera中使用 for-in 语句遍历对象属性时会遵循一个规律,它们会先提取所有 key 的 parseFloat 值为非负整数的属性, 然后根据数字顺序对属性排序首先遍历出来,然后按照对象定义的顺序遍历余下的所有属性。其它浏览器则完全按照对象定义的顺序遍历属性。

一个测试样本:


var obj = {
Waa: "Waa",
aa: 'aa',
68: '68',
15: '15',
tt: 'tt',
'-7': '-7',
: "__",
online: true
};
for (var k in obj) {
console.log(k);
}

本文链接