function deepClone(obj){
// 判断原目标是数组还是对象,进行初始化赋值
const newObj = obj.constructor === Array ? [] :{};
// 循环原目标
for(let key in obj){
// 判断当前值是否存在
if(obj.hasOwnProperty(key)){
// 判断是否当前要拷贝的是否是对象
if(obj[key] && typeof obj[key] === 'object'){
// 是对象,再次调用deepClone递归
newObj[key] = deepClone(obj[key]);
}else{
// 数组,直接赋值就好
newObj[key] = obj[key];
}
}
}
return newObj;
}
const obj1 = {
name:'qss',
age:'18',
books:['活着','撒野'],
friends:{
name:'aaa',
age:'18',
books:['xxx','xxx']
},
fn1:()=>{console.log('我是函数')}
}
const newObj = deepClone(obj1);
console.log(newObj)
js递归实现深度拷贝
最新推荐文章于 2023-10-06 10:33:23 发布