手写递归深拷贝
作者:互联网
let obj = {
job: {
address: 'shenzhen',
salary: '20k'
},
name: 'zhang',
age: 22
}
// 第一种(函数和正则不可以)
// let obj1 = JSON.parse(JSON.stringify(obj))
// obj.name = 'mm'
// console.log(obj1);
// console.log(obj);
// 第二种递归拷贝
function deepCopy (obj) {
let copyObj = Array.isArray(obj) ? [] : {}
Object.keys(obj).forEach(key => {
if (obj.hasOwnProperty(key)) {
if (obj[key] instanceof Object) {
copyObj[key] = deepCopy(obj[key])
} else {
copyObj[key] = obj[key]
}
}
})
// for (var key in obj) {
// if (obj.hasOwnProperty(key)) {
// if (typeof obj[key] === 'object') {
// copyObj[key] = deepCopy(obj[key])
// } else {
// copyObj[key] = obj[key]
// }
// }
// }
return copyObj
}
let obj2 = deepCopy(obj)
obj.name = 'yangyang'
obj.job.address = 'shanghai'
console.log(obj2);
console.log(obj);
标签:obj,log,递归,copyObj,let,key,console,手写,拷贝 来源: https://www.cnblogs.com/zw100655/p/16187792.html