递归赋值
可满足所有情况
function DeepClone(beforeObj) {
let cloneObj = Array.isArray(beforeObj) ? [] : {};
if( beforeObj && typeof beforeObj === 'object'){
for(key in beforeObj){
if(beforeObj[key] && typeof beforeObj[key] === 'object'){
cloneObj[key] = DeepClone(beforeObj[key])
}else{
cloneObj[key] = beforeObj[key]
}
}
} else {
cloneObj = beforeObj
}
return cloneObj
}
通过JSON方法
可满足大多数情况,除了对象中含有function
let cloneObj = JSON.parse(JSON.stringfy(beforObj))
借助Lodash
let cloneObj = _.cloonDeep(beforeObj)