定义了一个数组 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是一个新的数组,这个功能要怎么实现?
现在想把a1[0]传给a2。我这样写 a2[0]=a1[0]。我知道我的这种传值方法是引用。如果a1[1]的值改变。a2取出来的值也跟着变了。我其实想实现,a1把值传给a2后,不论a1的值变不变,a2的值都不变了。也就是a2是一个新的数组,这个功能要怎么实现?
如果a1[1]的值改变。a2取出来的值是不会变的如果是引用,需要clone对象进行赋值
var a2=new array(1);for(var i=0;i<a1.length;i++){
a2.push(a1[0]);//把值放入a2数组中,就可以实现你想要的功能了
}
//拷贝对象
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);