js 深度复制deepClone

function isObject(obj) {
  return typeof obj === 'object' && obj != null;
}
const deepClone =(source, hash = new WeakMap())=>{
  if(!isObject(source)) return source;
  if(hash.has(source)) return has.get(source)
  const target = Array.isArray(source) ? [] : {};
  hash.set(source, target);
  for( key in source){
    if(Object.prototype.hasOwnProperty.call(source, key)){
    target[key] = deepClone(source[key], hash)
  }
}
return target;
}

 

posted @ 2019-03-07 19:30  shangyueyue  阅读(1697)  评论(0编辑  收藏  举报