前端面试最容易懂的深拷贝

130 阅读1分钟
let jack = {
  name: "jack.ma",
  age: 40,
  file:undefined,
  fn:function(){
    console.log('lala')
  },
  friends:['小红','小绿'],
  like: {
    dog: {
      color: "black",
      age: 3,
      girlFriend:{
        name:'xh'
      }
    }
  },
}
function copyObjectFn(target) {
  let cloneObj = typeof target === 'object' ? {} : []
  for(let key in target){
    if(Object.prototype.toString.call(target[key]) == '[object Object]'||Object.prototype.toString.call(target[key]) == '[object Array]') {
     let obj =  copyObjectFn(target[key]);
     cloneObj[key] = obj
    }
    cloneObj[key] = target[key]
  }
  return cloneObj
}
const cloneObj = copyObjectFn(jack)

cloneObj.address = '北京市';
cloneObj.fn = null;
console.log('cloneObj',cloneObj)
console.log('jack',jack)

A1C2CB36-7A2E-42F9-BD92-201DA01F8A81.png