SOURCE

/**
 * @desc
*/
function deepClone(obj, cache = new WeakMap()) {
    if (obj === null || typeof obj !== 'object') {
        return obj;
    }
    if (obj instanceof Date) {
        return new Date(obj);
    }

    if (obj instanceof RegExp) {
        return new RegExp(obj);
    }
    // 避免循环引用
    if (cache.has(obj)) {
        return cache.get(obj);
    }
    // 创建一个新的对象
    const cloneObj = new obj.constructor() // 保持原型链
    for (let key in cloneObj) {
        if (obj.hasOwnProperty(key)) {
            cloneObj[key] = deepClone(obj[key], cache);
        }
    }
    return cloneObj;
}
console 命令行工具 X clear

                    
>
console