Var Array1=[1,2,3];
Var Array2=Array1;

为什么我的Array1变为[1,2]
Array2也跟着变为了[1,2]
怎么样Array1变,Array2不变。

解决方案 »

  1.   

    此类型有些类似于.net引用类型,因此Array2=Array1操作不是真正的复制拷贝,只是两个变量指向同一个对象,因此需要手动进行复制。
      

  2.   

    指向同一个对象,值一致
    array操作
    var arr = new Array();
    arr[0] = "1";
    arr[1] = "2";
    arr[2] = "3";
    不一致要单独操作
    concat() 连接两个或更多的数组,并返回结果
    join() 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。
    pop() 删除并返回数组的最后一个元素 
    push() 向数组的末尾添加一个或更多元素,并返回新的长度。 
    reverse() 颠倒数组中元素的顺序
    shift() 删除并返回数组的第一个元素  
    toLocaleString() 把数组转换为本地数组,并返回结果。
    unshift() 向数组的开头添加一个或更多元素,并返回新的长度
    valueOf() 返回数组对象的原始值 参考
      

  3.   

    你这样只是复制了Array1的地址,应该这样写var Array2 = Array1.splice(0);
    可以实现复制功能