利用递归进行深拷贝方法的封装
方法:
function deepCopy(newObj, obj) {
for (let key in obj) {
// obj[key]有可能是数组,有可能是,有简单类型
if (obj[key] instanceof Array) { // obj[key]是数组
newObj[key] = []
deepCopy(newObj[key], obj[key]);
} else if (obj[key] instanceof Object) {// obj[key]是对象
newObj[key] = {}
deepCopy(newObj[key], obj[key]);
} else {
newObj[key] = obj[key];
}
}
}
数组深拷贝的使用:
// 数组调用深拷贝
const arrOld = [1, 2, 3, 4, 5, 6]
const arrNew = []
deepCopy(arrNew, arrOld)
arrNew.splice(1, 2)
console.log(arrNew, arrOld); // [1, 4, 5, 6] [1,2,3,4,5,6]
对象深拷贝的使用:
// 对象调用深拷贝
const objOld = {
name: '小明',
age: 18,
sex: '男'
}
const objNew = {}
deepCopy(objNew, objOld)
objNew.name = '张三'
console.log(objNew, objOld);