JS中的浅拷贝与深拷贝案例

浅拷贝

浅拷贝:仅复制了引用,彼此之间的操作会互相影响 

let obj1 = {
        name:"李四",
        age:"18",
        sex:"女",
        score:"89",
        car:["奔驰","宝马","奥迪"]

    }

    let obj2 = {};

    function simpleClone(a,b){
        for(var k in a){
            b[k] = a[k];
        }
       
    }
    simpleClone(obj1,obj2);
    console.log(obj1);//name: "李四", age: "18", sex: "女", score: "89", car: Array(3)}age: "18"car: (3) ["张⑤", "宝马", "奥迪"]name: "李四"score: "89"sex: "女"
    console.log(obj2);//name: "李四", age: "18", sex: "女", score: "89", car: Array(3)}age: "18"car: (3) ["张⑤", "宝马", "奥迪"]name: "李四"score: "89"sex: "女"
    obj1.car[0] = "张⑤";
    console.log(obj1);//name: "李四", age: "18", sex: "女", score: "89", car: Array(3)}age: "18"car: (3) ["张⑤", "宝马", "奥迪"]name: "李四"score: "89"sex: "女"
    console.log(obj2);//name: "李四", age: "18", sex: "女", score: "89", car: Array(3)}age: "18"car: (3) ["张⑤", "宝马", "奥迪"]name: "李四"score: "89"sex: "女"

深拷贝

  深拷贝:在堆中重新分配内存,不同的地址,互不影响

let obj3 = {
        name:"刘诗雨",
        age:"28",
        sex:"女",
        score:"100"
    }

    let obj4 = {};

    function deepClone(a,b){
        for(var key in a){
            var item = a[key];
            if (item instanceof Array){
                b[key] = [];
                deepClone(item,b[key]);
            }else if (item instanceof Object){
                b[key] = {};
                deepClone(item,b[key]);
            }else{
                b[key] = item;
            }
        }
    }

    deepClone(obj3,obj4);
    console.log(obj3);//{name: "刘诗雨", age: "28", sex: "女", score: "100"}

    console.log(obj4);//{name: "刘诗雨", age: "28", sex: "女", score: "100"}

    obj3.name = "刘欢";
    
    console.log(obj3);//{name: "刘欢", age: "28", sex: "女", score: "100"}

    console.log(obj4);//{name: "刘诗雨", age: "28", sex: "女", score: "100"}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值