Object.assign 是浅拷贝还是深拷贝?

1.Object.assign的基本用法

Object.assign(目标,数据1,数据2…);

//示例1
let obj = {a:1}
let newObj = Object.assign({},obj);
console.log(newObj) //{a: 1}
 
 
//示例2
 
let obj1 = {name:"zhangsan"};
let obj2 = {age:18};
let obj3 = Object.assign({},obj1,obj2);
console.log(obj3) //{name: "zhangsan", age: 18}

2.关于Object.assign是浅拷贝还是深拷贝的问题:

答:第一级属性深拷贝,从第二级属性开始就是浅拷贝。

//示例1  一层深拷贝
let obj = {a:1}
let newObj = Object.assign({},obj);
console.log(newObj); //{a: 1}
newObj.a=2;
console.log(obj); //{a:1}
console.log(newObj); //{a: 2}
 
 
//示例2  二层浅拷贝
let obj = {a:1,b:{name:"zhangsan"}}
let newObj = Object.assign({},obj);
console.log(newObj); //{a:1,b:{name:"zhangsan"}}
newObj.b.name="lisi";
console.log(obj); //{a:1,b:{name:"lisi"}}
console.log(newObj); //{a:1,b:{name:"lisi"}}

转载于 https://blog.csdn.net/qq_42089654/article/details/88017609

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值