那位高手指点指点:  var aa=[2,3];
                    aa['asd']=23;
                     window .alert (aa.length)这个结果是2
//加了aa['asd']=23后
 var aa=[2,3];
    aa['asd']=23;
    aa[3]=22;
    window .alert (aa.length )
这个结果是3为啥第一段代码是二呢? 

解决方案 »

  1.   

    这个结果是3var aa = [];
    aa[3] = 22;
    alert(aa.length);
    首先:这个结果是4对于Array类型只有下标是整数或整数字符串的时候才会改变length。aa['asd']=23; -> aa.asd=23;
    这样的赋值只是当成了字段,而非下标。
      

  2.   

    var aa = [];
    aa[3] = 22;
    alert(aa.length);这个结果咋是四呢?var aa = [];这个没给数组赋值
      

  3.   

    aa['asd']=23;   // 这个是aa 对象下的一个成员。
    如:
    var AA = function(){
       this.asd=23;
    };
    var aa=new AA();
    aa['asd']=23;  要如下才能取得
    for(var v in aa)
    {
       alert("Key:"+v.toString()+"Value:"+aa[v].toString());
    }
      

  4.   

    在JavaScrip中,数组的第一个元素下标是0,但作为一种特殊的对象,可以在一个数组上定义非数字的对象属性,并且使用.或[]语法来访问它。因此
      var aa=[2,3];
      aa['asd']=23;
      window .alert (aa.length)
    这个结果是2
      var aa=[2,3];
      aa['asd']=23;
      aa[3]=22;
      window .alert (aa.length )
    这个结果是3
    建议楼主看看JavaScrip权威指南
      
      

  5.   


    javascript中,所有的Object都是关联数组。
    var obj = new Object();
    obj["name"] = 123;Array可以说是特殊的扩展。它允许数组作为下标。
    所以你
    var aa=[2,3];
      aa['asd']=23;
    这个时候,用的是作为object的功能,而不是作为array的功能。