手写递归深拷贝
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);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了