题解 | #深拷贝#
深拷贝
https://www.nowcoder.com/practice/70ca77b52d424ced8ebb348cd77c1dc5
const _completeDeepClone = (obj, visited = new WeakMap()) => { // 补全代码 // 处理基本类型 if (obj === null || typeof obj !== 'object') { return obj; } // 处理循环引用 if (visited.has(obj)) { return visited.get(obj); } // 处理日期类型 if (obj instanceof Date) { return new Date(obj); } // 处理正则表达式类型 if (obj instanceof RegExp) { return new RegExp(obj); } // 处理函数类型 if (typeof obj === 'function') { return obj; } // 处理数组类型 if (Array.isArray(obj)) { const copyArray = []; visited.set(obj, copyArray); for (let i = 0; i < obj.length; i++) { copyArray[i] = _completeDeepClone(obj[i], visited); } return copyArray; } // 处理普通对象类型 const copyObj = {}; visited.set(obj, copyObj); for (const key in obj) { if (obj.hasOwnProperty(key)) { copyObj[key] = _completeDeepClone(obj[key], visited); } } return copyObj; }