SOURCE

function deeplone(obj){
    let cpyobj;
    let mp = new WeakMap();
    if(typeof obj=='object'){
       cpyobj = Array.isArray(obj) ? [] :{}
    }else{
        return obj;
    }
    if(mp.has(obj)){
        return mp.get(obj)
    }else{
        mp.set(obj,cpyobj);
    }
    for(let key in obj){
        cpyobj[key] = deeplone(obj[key])
    }
    return cpyobj;
}
// obj.obj=obj
// let obj={
//     a:1,
//     b:[1,2,3],
//     c:{
//         d:1,
//         e:2
//     },
//     f:function(){
//         console.log(this)
//     }
// }
let obj =  [[1,2,3],[1,[2,3,[4,5,6]]]]
let cpy = deeplone(obj);
console.log(cpy);
// cpy.d='d'
// console.log(obj.c,"obj")
console 命令行工具 X clear

                    
>
console