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' } } }
posted @ 2021-12-10 15:56  有肌肉的小眼睛  阅读(79)  评论(0)    收藏  举报