js 实现对象深拷贝
function deepClone(obj) {
if(obj == null) return
var newObj = Array.isArray(obj) ? [] : {}
for(let key in obj) {
if(obj.hasOwnProperty(key)) { // obj对象自身属性中是否具有key
if(typeof obj[key] == 'object') {
newObj[key] = deepClone(obj[key]) //递归
}else {
newObj[key] = obj[key]
}
}
}
return newObj
}
let obj = {name: 'song', child1: {sex: 'man', child2: {age: '26'}}}
let target = deepClone(obj)
target.child1.child2.age = '27'
console.log(target, obj)
打印结果:
target: { name: 'song', child1: { sex: 'man', child2: { age: '27' } } } obj: { name: 'song', child1: { sex: 'man', child2: { age: '26' } } }