通俗易懂的js递归函数实现深拷贝

120 阅读1分钟
     var obj = {
      id: 1,
      name: 'andy',
      msg: {
        age: 18
      },
      color: ['blue', 'red']
    }
    var o = {}
    function deepCopy(newobj, olodobj) {
      for (var key in olodobj) {
        var item = olodobj[key]  // 其主要思想就是判断传进来对象属性值的类型(其无非就是判断三种,Array,Object,基本数据类型)
        if (item instanceof Array) {
          newobj[key] = []
          deepCopy(newobj[key], item)
        }else if(item instanceof Object){
          newobj[key] = {}
          deepCopy(newobj[key], item)
        }else{
          newobj[key] = item  // 这一步很关键,无论是数组,对象,经过上面的for...in遍历都会来到这一步
        }
      }
    }
    deepCopy(o, obj)