深浅拷贝

浅拷贝与深拷贝:JavaScript对象复制技巧
本文探讨了JavaScript中浅拷贝(Object.assign和Array.prototype.slice)的区别,以及如何通过JSON.stringify进行深拷贝。了解这两种操作在对象和数组修改后的不同效果,以及实际应用场景中的优劣。

浅拷贝

Object.assign() //es6的方法
Object.assign会合并对象生成一个新对象。如果对象的属性是普通类型改变之后新对象不会改变,如果是引用类型改变后新对象也会改变,所以Object.assign实际上还是浅拷贝。
// assign浅拷贝
// var obj = { obj1: { a: “hahahahaha”, b: 39 } };
// var obj1v =
// Object.assign({}, obj);
// obj1v.obj1.a = “gagagagagagaga”;
// console.log(obj.obj1.a);
在这里插入图片描述

    // concat
    // let arr = [1, 3, { username: 'AAA' }];
    // let arr2 = arr.concat();
    // arr2[2].username = 'songzijun';
    // console.log(arr);

!](https://img-blog.csdnimg.cn/20201208220551966.png)

  Array.prototype.slice()
    let arr = [1, 3, { username: ' songzijun' }];
    let arr2 = arr.slice();
    arr2[2].username = 'aaa'
    console.log(arr);

在这里插入图片描述

###深拷贝

JSON.parse(JSON.stringify(obj))
利用JSON.stringify(obj)将对象先转为json字符串,再JSON.parse()转回为json对象可以实现深拷贝,这也是比较常用的一种方法。
let arr = [1, 3, { username: ’ SONGZIJUN’ }];
let arr2 = JSON.parse(JSON.stringify(arr));
arr2[2].username = ‘aaaa’;
console.log(arr, arr2)在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值