对象的深拷贝

Posted Steven_YF

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对象的深拷贝相关的知识,希望对你有一定的参考价值。

CSDN:https://blog.csdn.net/cc18868876837/article/details/114918262
掘金:https://juejin.cn/post/7207090090101866557#heading-16

          function deepClone(obj,cloneObj) 
                var cloneObj = cloneObj || ;
                for(let i in obj) 
                    if(typeof obj[i] === \'object\' && obj[i] !== null) 
                        cloneObj[i] = obj[i] instanceof Array ? [] : ;
                        deepClone(obj[i],cloneObj[i])
                    else 
                        cloneObj[i] = obj[i];
                    
                
                return cloneObj;
            

如何实现对象的深拷贝

对象的深拷贝,是指拷贝对象时拷贝的是对象的地址,新数据改变时,老数据也会被改变。

解决方式:利用for in将对象遍历,将值复制给新对象

例:

 var obj1 = {
        name:"admin"
    }
 
    var obj2 = {};
    for(var i in obj1){
        obj2[i] = obj1[i];
    }
当需拷贝的对象为多层对象嵌套时,如:
var obj1 = {
        name:{
            name2:{
                name3:{
                    name4:"admin";
                }
            }
        }
    }
仅靠for in已经不能实现对象的深拷贝了,此时可以将需拷贝的对象先转换为JSON,再将JSON数据转换为对象。
例:
 var obj2 = JSON.parse(JSON.stringify(obj1))
 
 

以上是关于对象的深拷贝的主要内容,如果未能解决你的问题,请参考以下文章

javascript 数组以及对象的深拷贝(复制数组或复制对象)的方法

Python中的深拷贝和浅拷贝

如何实现对象的深拷贝

6javascript中对象和数组的深拷贝

对象数组的深拷贝

Python中的深拷贝与浅拷贝