定义了一个数组 var a1=new array("1")又定义了一个新的数组var a2=new array(1);
现在想把a1[0]传给a2。我这样写 a2[0]=a1[0]。我知道我的这种传值方法是引用。如果a1[1]的值改变。a2取出来的值也跟着变了。我其实想实现,a1把值传给a2后,不论a1的值变不变,a2的值都不变了。也就是a2是一个新的数组,这个功能要怎么实现?

解决方案 »

  1.   

    数字和字符串传递,不是引用传递,是值传递
    如果a1[1]的值改变。a2取出来的值是不会变的如果是引用,需要clone对象进行赋值
      

  2.   

    var a1=new array("1");
    var a2=new array(1);for(var i=0;i<a1.length;i++){
    a2.push(a1[0]);//把值放入a2数组中,就可以实现你想要的功能了
    }
      

  3.   

    up 你a1是字符串啊不会变的
      

  4.   


    //拷贝对象
    function Clone(obj) {    var newObj = {};    for (var item in obj) {
            if (typeof (obj[item]) != "object") {
                newObj[item] = obj[item];
            }
            else {
                newObj[item] = Clone(obj[item]);
            }
        }    return newObj;
    }
    测试数据://对象Person
    var Person = { ID: "001", Name: "张三", Age: 18, Class: { ID: "001001", Name: "班级一"} }
    //拷贝之后的新对象
    var newPerson = Clone(Person);