var arr1=[];
arr1['width']=100;
arr1['height']=200;
alert(arr1['width'])
alert(arr1.length)  

解决方案 »

  1.   

    你那样添加后实际是hashtable了,不是数组。hashtable没有增加length属性
      

  2.   

    改用对象
    var arr1={};
    arr1['width']=100;
    arr1['height']=200;
    alert(arr1['width']);
    var n=0;
    for(var i in arr1) n++;
    alert(n);
      

  3.   

    都叫数组了,中括号内可称为下标
    其他强类型语言中括号内的下标都是只允许为int的
    js支持中括号内用字符串标识,这已经是极度的灵活姓了,你还想怎么样?其实用字符串作下标的话js是给对象增加了一个成员而不是给数组添加了长度
    自己试试
    var arr1=[];
    arr1['width']=100;
    arr1['height']=200;
    alert(arr1.width);//弹出100所以arr1['width']=100等效于arr1.width=100;
    换种写法就明白了吧?你觉得后面一种写法会增加数组长度么?
      

  4.   

    length实根据数组的最大下标+1得出来的  你的下标不是数字  所以不行啊 关联数组其实已经不是真真意义上的数组了 
    可以用for(in)遍历然后递增来获得长度试试
    var arr1=[];
    arr1['width']=100;
    arr1['height']=200;
    var l=0;
    for(var i in arr1){
    l++;
    }
    alert(l)
    类似于这样试试
      

  5.   

    arr1['width']是个数组加的一个 width 属性添加数组值 用
    arr1.push(100);