数组浅拷贝
var arr=[1,2,3];
var arr2=arr;
arr.push(4);
数组深拷贝
var arr=[1,2,3];
var arr2=[];
for(var i=0;i<arr.length;i++){
arr2[i]=arr[i];
}
复合数组深拷贝
var arr=[1,2,{name:"123"}];
// console.log(arr.constructor.name);
// var obj={}
// var arr2=[1,2];
//深拷贝
function deepClone(argu){
if(argu.constructor.name==="Array"){//为数组
var arr=[];
for(var i=0;i<argu.length;i++){
if(typeof argu[i]==="object"){//为对象或数组
arr.push(deepClone(argu[i]));
}else{//如果值是值类型,则直接添加
arr.push(argu[i]);
}
}
return arr;
}else{//为对象
var obj={};
for(var x in argu){
if(typeof argu[x]==="object"){
obj[x]=deepClone(argu[x]);
}else{
obj[x]=argu[x];
}
}
return obj;
}
}
var a=[{
person:[1,2,3,{
name:"rase"
}]
}]
var res=deepClone(a);
a[0].person[3].name="kalrase";
console.log(res);
网友评论