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

时间:2021-12-19 19:49:01

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

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

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

深刻理解 引用类型、浅拷贝、深拷贝深刻理解 引用类型、浅拷贝、深拷贝
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

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

 

981900309@qq.com