js 深度克隆

207 阅读1分钟

每次都用lodash的clonedeep,有点烦躁啦,自己写一个简单深度克隆玩耍下:

function deepClone(obj) { // 递归拷贝 深拷贝
  if(obj == null) return null;
  if (obj instanceof Date) return new Date(obj); 
  if(obj instanceof RegExp) return new RegExp(obj); 
  if(typeof obj !== 'object') return obj; 
  // 主角出来了  
  let t = new obj.constructor // 找到对象的构造函数 并用这个构造函数创建一个这个类型的对象  
  // 递归起来吧  
  for(let key in obj ){    
    t[key] = deepClone(obj[key])
  }
  return t;
}

打完收功!谢谢吐槽,一起进步!