← 返回首页

深拷贝(Deep Clone)

function deepClone(obj, map = new WeakMap()) {
  if (obj === null || typeof obj !== 'object') return obj;
  if (map.has(obj)) return map.get(obj); // 处理循环引用
  
  const clone = obj instanceof Date ? new Date(obj)
    : obj instanceof RegExp ? new RegExp(obj)
    : Array.isArray(obj) ? []
    : {};
  
  map.set(obj, clone);
  Reflect.ownKeys(obj).forEach(key => {
    clone[key] = deepClone(obj[key], map);
  });
  return clone;
}