再写一篇递归深拷贝

deepClone(newObj,oldObj){
  for( var k in oldObj){
    var item = oldObj[k];
    //如果是数组
    if(item instanceof Array){
      newObj[k] = [];
      this.deepClone(newObj[k],item)
      // 如果是对象
    }else if(item instanceof Object){
      newObj[k] = {};
      this.deepClone(newObj[k],item)
      // 简单数据类型
    }else{
      newObj[k] = item
    }
  }
}

这里主要是对遍历的对象做个判断,如果是复杂数据类型(要先判断是否是数组,再判断是否是对象,注意顺序不能调换,因为数组也是对象)则使用递归;如果是简单数据类型则直接赋值。

原文地址:https://www.cnblogs.com/landofpromise/p/12712939.html