JS对象递归深度拷贝

在JavaScript中,拷贝对象分为两种方式,浅拷贝和深拷贝。

浅拷贝指两个不同的变量存的是同一个对象的地址,即两个变量指向同一块内存区域;深拷贝则是重新分配了一块内存区域来存储复制后的对象,两个变量存的是真正的两个互不影响的变量。

下面的就是浅拷贝,有时候需要保留原对象,复制出另外一份对象他用,就肯定会遇到这个问题,在修改另外的对象的时候,原对象也会跟着变化。

这是一种方法,如果对象非常多的话,可能就得考虑性能了。

// 深度拷贝
deepCopy(obj){
    if ( typeof obj != 'object' ){ // ( obj  instanceof Object || obj  instanceof Array )
        return obj;
    }
    var newobj = {};
    for ( var attr in obj) {
        newobj[attr] = this.deepCopy(obj[attr]);
    }
    return newobj;
}

部分内容来源于 js 对象拷贝

posted @ 2022-04-14 22:16  槑孒  阅读(176)  评论(0编辑  收藏  举报