function deepCopy(arr){
let new_arr;
if(typeof arr=='object'){
if(Array.isArray(arr)){
new_arr=[];
for(let i=0;i<arr.length;i++){
new_arr.push(deepCopy(arr[i]));
}
}else{
new_arr={};
for(let prop in arr){
new_arr[prop]=deepCopy(arr[prop]);
}
}
}
else
new_arr=arr;
return new_arr;
}
let obj={a:1,b:2,c:[1,2,3],d:function(){console.log('1')}}
//let new_obj=JSON.parse(JSON.stringify(obj));
let new_obj=deepCopy(obj)
console.log(new_obj);
new_obj['c'].push(4);
console.log(new_obj);
console.log(obj);
利用JSON进复制的缺点在于:不能够复制函数,不能识别指为undefined的属性。