一个简单的对象
let obj = {
name: '张三',
age: '18',
loves: ['打蓝球', '唱歌', '跑步'],
info: {
surname: '张',
height: '180cm'
}
}
递归方式完成深拷贝
// 递归的方式实现深拷贝
// 创建一个函数,传入参数是需要深拷贝的对象
function deepclone(obj) {
// 判断参数是对象还是数组
let isArr = Array.isArray(obj);
// 根据传入的参数声明克隆的类型
let objClone = isArr ? [] : {}
// 遍历需要拷贝的对象的属性
for (const key in obj) {
// console.log(obj[key]);
// 判断属性的值是否为对象
if (typeof obj[key] === 'object') {
// 是对象递归复制
objClone[key] = deepclone(obj[key])
} else {
// 不是对象直接复制
objClone[key] = obj[key]
}
}
return objClone
}
调用
console.log(deepclone(obj));
运行结果
总结:
实现了简单深拷贝,万事开头难,前端第一步,从深拷贝开始