var a = new Array(); a[0]=1; a[1]=2; a[3]=3; for(i in a) alert(a[i]);试了一下,他会把Array对象的方法和数组元素都alert出来,这个应该怎么弄?难道只能用原始的for(i=0;i<length;i++)来操作么?网上很多博客都疯狂转载用for in遍历数组的办法,也不自己测试一下,难道只是为了提高点击率?太无聊了吧.
测试了 只alert出了 数组中的元素 没有alert出对象的方法 测试代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>无标题页</title> </head> <body> <script> var a = new Array(); a[0]=1; a[1]=2; a[3]=3; for(i in a) alert(a[i]); </script> </body> </html>
是要注意这点,数组还是别用for in最好,因为很多时候,Array对象原形会绑定一些方法.比如 Array.prototype.fn1 = function(){ alert('hi') } Array.prototype.fn2 = function(){ alert('hey') } var a = [1,2,3] for(var i in a){ alert(i+':'+a[i]); }
没有alert出对象的方法
测试代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>无标题页</title>
</head>
<body>
<script>
var a = new Array();
a[0]=1;
a[1]=2;
a[3]=3;
for(i in a)
alert(a[i]);
</script>
</body>
</html>
Array.prototype.fn1 = function(){
alert('hi')
}
Array.prototype.fn2 = function(){
alert('hey')
}
var a = [1,2,3]
for(var i in a){
alert(i+':'+a[i]);
}
很多类库都会为数组类型对象绑定个each函数,这样代码量会有所下降,比如简单的实现个each方法。
Array.prototype.each = function(fn,scope){
for(var i=0,j=this.length;i<j;i++){
fn.apply(scope||this[i],[i,this[i]]);
}
}
var a = [1,2,3]
a.each(function(i,v){
alert(i+':'+v);
})