深拷贝和浅拷贝

    科技2026-08-17  11

    深拷贝:增加了一个新的指针以及申请了一个新的地址空间,这个新的指针指向这个新的地址空间 浅拷贝:增加了一个新的指针,指向原有的地址空间 本质区别:是否真正获取一个对象的复制实体,而不是引用

    举例:假设B复制了A,修改A的时候,看B是否发生变化 如果B跟着也变了,说明是浅拷贝,拿人手短!(修改堆内存中的同一个值) 如果B没有改变,说明是深拷贝,自食其力!(修改堆内存中的不同的值)

    深拷贝 它不仅将原对象上的各个属性逐个复制,还将属性包含的对象也采用深复制的方法递归复制到新的对象上去。

    //方法一 Json.parse(Json.stringify(obj)); //方法二 var obj = { "id":"007", "name":"刘德华", "wife":{ "id":"008", "name":"刘德的妻子", "address":{ "city":"北京", "area":"海淀区" } } } //写函数 function foo(obj){ let newObj = {}; for(let key in obj){ if(typeof(obj[key]) == "object"){ newObj[key] = foo(obj[key]); } else { newObj[key] = obj[key]; } } return newObj; } foo(obj);

    浅拷贝 将原对象上的各个属性逐个复制,并不会递归复制

    var obj = { "name" : "hanhan", "age" : "6", "character" : "benben" } function foo(obj){ let newObj = {}; for(let key in obj){ newObj[key] = obj[key]; } return newObj; } foo(obj);
    Processed: 0.008, SQL: 9