/**
* 深拷贝
* 1.判断类型
* 2.判断是数组还是对象
* 3.递归
*/
let obj1 = {
name: 'zhangsan',
address: {
city: '杭州',
},
friends: ['a', 'b'],
}
// let obj2 = obj1; // 浅拷贝
let obj2 = deepClone(obj1); // 深拷贝
obj2.address.city = '上海';
obj2.friends[1] = 'c';
console.log(obj1);
function deepClone(obj = {}) {
// 判断数据类型,null或值类型 直接返回
if(obj == null || typeof obj !== 'object') {
return obj;
}
// 引用类型,判断是数组还是对象
let result = obj instanceof Array ? [] : {};
for(let key in obj) {
// 要保证key是自己的属性
if(obj.hasOwnProperty(key)) {
// 递归
result[key] = deepClone(obj[key])
}
}
return result;
}
JS实现深拷贝
于 2022-01-24 22:53:55 首次发布