JavaScript中的深拷贝和浅拷贝

1、浅层拷贝

在拷贝时,对于属性值为引用类型的属性也只会拷贝其地址,而不是具体的值,这会导致我们修改了拷贝后的引用类型数据时会影响到原对象中的引用类型属性。

a、通过for in遍历实现

b、通过Object.assign方法实现 

 2、深层拷贝

    var obj = {
        name: "zs",
        teg: ["数据结构", "算法", "设计模式"],
        children: {
            name: "zs_1",
            sex: "女",
            age: 3
        }
    }
 
    function fn(obj) {
        var newObj = obj instanceof Array ? [] : {}
        for (let k in obj) {
            newObj[k] = typeof obj[k] === 'object' ? fn(obj[k]) : obj[k];
        }
        return newObj;
    }

2、通过JSON方法转换实现

先用JSON.stringify方法把对象转换为字符串

在用JSON.parse()方法把字符串转为对象

JSON方法如果对象里面出现方法会显示不出来

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值