一. 先从浅拷贝开始
function clone(obj){
var clone = Array.isArray(obj)?[]:{};
if(obj && typeof obj==="object"){
for( var property in obj){
clone[property] = obj[property];
}
return clone;
} else {
return obj;
}
}
二.开始我们真正的深拷贝
// 一.用递归实现的深拷贝
function deepClone(obj){
let objClone = Array.isArray(obj)?[]:{};
if(obj && typeof obj==="object"){
for(key in obj){
if(obj.hasOwnProperty(key)){
//判断ojb子元素是否为对象,如果是,递归复制
if(obj[key]&&typeof obj[key] ==="object"){
objClone[key] = deepClone(obj[key]);
}else{
//如果不是,简单复制
objClone[key] = obj[key];
}
}
}
}
return objClone;
}
// 二.用JSON对象的parse和stringify实现的深拷贝
function deepClone(obj){
let _obj = JSON.stringify(obj),
objClone = JSON.parse(_obj);
return objClone
}