【JS篇】实现深拷贝的几种方式

483 阅读1分钟

递归赋值

可满足所有情况

function DeepClone(beforeObj) {
        let cloneObj = Array.isArray(beforeObj) ? [] : {};
        if( beforeObj && typeof beforeObj === 'object'){
            for(key in beforeObj){
                if(beforeObj[key] && typeof beforeObj[key] === 'object'){
                    cloneObj[key] = DeepClone(beforeObj[key])
                }else{
                    cloneObj[key] = beforeObj[key]
                }
            }
        } else {
            cloneObj = beforeObj
        }
        return cloneObj
    }

通过JSON方法

可满足大多数情况,除了对象中含有function

let cloneObj = JSON.parse(JSON.stringfy(beforObj))

借助Lodash

let cloneObj = _.cloonDeep(beforeObj)