js的for in的小提示
话说今天调了一个bug,先叙述一下过程吧:
if(!Array.prototype.indexOf){
Array.prototype.indexOf = function(obj){
for(var i=0; i<this.length; i++){
if(this[i]==obj){
return i;
}
}
return -1;
}
}
这段代码估计很多人用过吧,他是用来解决IE下没有indexOf这个问题的,也就是因为这段代码,才出现的IE下for in的问题(好吧,都是万恶的IE。。。。。)
当还没加上这段代码的时候
var a = [1,2,3];
for( var k in a){
alert(a[k]);
}
这样没有任何问题,结果是1,2,3。。。。
但是,当加上上面的代码时,奇迹就发生了,他会先打出上面的function,然后再1,2,3。。。。。。
额。。。 神一样的蛋疼。。。
大概的意思就是IE下用for in的时候,不光会遍历出数组的值,还会遍历出你新添加的方法。。。。
所以,大家以后在IE下用for in请小心喽~
解决办法嘛,目前我想到的就是加一个判断:
for( var k in a){
if( k == "indexOf")
continue;
.........
}
或者是:
for( var k in a){
if(!isNaN(k)){
.........
}
}
大概就是这个样子,如果高手有好的方法的话,希望留言告诉我一下,先在这儿谢谢啦~
嗯嗯,差不多就这个样子,然后就是,话说这个周五要世界末日了,亲们还有什么想做的赶紧去行动吧~
1 条评论
写评论 →