for in 的各种坑
for in方法用来遍历数组或者对象的显性属性,就是说我们自己定义的属性都是可以遍历的,而对象固有的属性,比如Object.prototype.toString是遍历不出来的。
for in方法简洁好用,但依旧有一些需要注意的地方
1. 遍历顺序
var b = {3:1,42:2,11:3}
for( var key in b ){
alert( b[key]);
}
只有高版本浏览器的顺序是1, 2, 3,低版本会是1, 3, 2
2.自定义的扩展方法会被遍历出来, for方法不会
Object.prototype.test = "I am test"
var b = {"name":"txj"}
for( var key in b ){
alert(key + " : "+ b[key])
}
test方法会被遍历出来
此外还有多个坑,但目前尚未遇见过,详细介绍可参考http://www.2cto.com/kf/201411/348278.html,目前的最好选择就是不用用for in遍历对象或对象数组。