1. 递归实现深拷贝(这个方法首先判断了要拷贝的对象是否为null或非对象类型,如果是,则直接返回该对象。否则,创建一个空对象或空数组,然后使用递归的方式拷贝对象的每个属性和子属性)
function deepClone(obj) {
if (obj === null || typeof obj !== 'object') {
return obj;
}
let clone = Array.isArray(obj) ? [] : {};
for (let key in obj) {
clone[key] = deepClone(obj[key]);
}
return clone;
}
2. 使用JSON序列化和反序列化实现深拷贝(这种方法的缺点是会忽略undefined、函数、Symbol等特殊类型的属性)
function deepClone(obj) {
return JSON.parse(JSON.stringify(obj));
}