手写一个有循环引用的深拷贝方法

32 阅读1分钟

今天周末,没事干,电脑打开了,手写一个深拷贝来练练手,不用代码编辑器是为了真的练手,并且以后好找的方便copy.

function deepClone(obj, map = new WeakMap()) {
    if((typeof obj !== 'object) || obj === null ) return obj;//处理基本数据类型
    if(map.has(obj)) return map.get(obj)
    const copy = Array.isArray(obj) ? []:{}
    map.set(obj,copu)
    for(let key in obj){
        if(obj.hasOwnProperty(key)) {
            copy[key] = deepClone(obj[key],map)
        }
    }
    return copy
}