js数组只支持数字索引,非数字索引指的是对象的属性了。跟你解释一下,这其中的差别,js的数组可以看做是特殊的对象(object),对象的属性有两种表示方法
如var a=Object();
1.a.myattr="lee";
2.a["myattr"]="lee";
1和2是等价的
不过楼主给的两条例子还是比较有探讨性的,先说
var a=new Array();
a['a1']=1;
a['a2']=2;
a.length //输出0
你没有给数组的元素赋值,所以a数组的长度也没有被创建出来,此时a.length自然是0.
var a=new Array();
a['a1']=1;
a['a2']=2;
a[2]=3;
你最后给数组元素a[2]赋值了,此时js会给数组a创建一个长度为3的空间,并在第三个元素中赋以3,但是元素1和元素2都没有赋值,所以此时a[0]和a[1]是没有值的,不信用可以alert一下
如var a=Object();
1.a.myattr="lee";
2.a["myattr"]="lee";
1和2是等价的
不过楼主给的两条例子还是比较有探讨性的,先说
var a=new Array();
a['a1']=1;
a['a2']=2;
a.length //输出0
你没有给数组的元素赋值,所以a数组的长度也没有被创建出来,此时a.length自然是0.
var a=new Array();
a['a1']=1;
a['a2']=2;
a[2]=3;
你最后给数组元素a[2]赋值了,此时js会给数组a创建一个长度为3的空间,并在第三个元素中赋以3,但是元素1和元素2都没有赋值,所以此时a[0]和a[1]是没有值的,不信用可以alert一下
本文深入探讨JavaScript数组的特性,特别是其作为特殊对象的属性赋值方式及其对数组长度的影响。通过具体实例说明数字索引与非数字索引的区别。

被折叠的 条评论
为什么被折叠?



