SOURCE

function deepClone(obj, hash = new WeakMap()) {
    if(typeof obj !== 'object' || obj === null) {
        return obj;
    }
    if(hash.has(obj)) {
        return hash.get(obj);
    }
    let res = Array.isArray(obj) ? [...obj] : {...obj};
    hash.set(obj, res);
    Reflect.ownKeys(res).forEach(key => {
        let item = res[key];
        res[key] = deepClone(item, hash);
    });
    return res;
}
console 命令行工具 X clear

                    
>
console