深刻理解 引用类型浅拷贝深拷贝

Posted caihua0405

tags:

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

简单粗暴的理解,就是对象都是引用类型 但是有的时候需要完全复制一个新的对象,操作新对象的时候不会改变原对象,这个时候就有了浅拷贝和深拷贝,

浅拷贝,拷贝的只是对象的一级内容,而子集内容还是引用类型,会随着新对象值的改变而改变,

深拷贝,完全拷贝出一个一模一样但是 没有任何关联的对象。

技术图片
var obj =
        name:1,
        age:
            a:2,
            b:
                c:123456
            
        
    ;
var obj2 = copy(obj);
function copy(obj)
        var newobj = ;
        for(arr in obj)
            newobj[arr] = obj[arr]
        
        return newobj;
     
           
View Code

这里例子就是 浅拷贝  他的二级  obj2.age.a  还是引用关系 。

技术图片
function copy(obj)
        var newobj = ;
        for(arr in obj)
            if(typeof obj[arr] === ‘object‘) 
                newobj[arr] =  copy(obj[arr])
             else 
                newobj[arr] = obj[arr]
            
            newobj[arr] = obj[arr]
        
        return newobj;
     
View Code

深拷贝 使用递归将所有子集 都打断引用关系

 

[email protected]

以上是关于深刻理解 引用类型浅拷贝深拷贝的主要内容,如果未能解决你的问题,请参考以下文章

深拷贝浅拷贝

我理解的浅拷贝和深拷贝

js中浅拷贝和深拷贝以及深拷贝的实现

Python对象赋值浅拷贝深拷贝

Javascript中的深拷贝和浅拷贝

理解浅拷贝和深拷贝以及实现方法