function cloneDeep(obj = {}){
if(typeof obj !== 'object' || obj === null){
return obj
}
let data;
if(Array.isArray(obj)){
data = [];
} else {
data = {};
}
for(let key in obj){
if(obj.hasOwnProperty(key)){
data[key] = cloneDeep(obj[key]);
}
}
return data;
}
let obj = {
name: 'ws',
age: 18,
attr: {
height: 180,
weight: 70
},
apprentice: [
{
name: 'ss',
age: 19,
attr: {
height: 190,
weight: 80
}
}
]
}
let cloneObj = cloneDeep(obj);
cloneObj.apprentice[0].age = 1000000;
console.log(obj)
console.log(cloneObj)
js递归深拷贝实现代码
于 2022-05-10 18:19:43 首次发布