js定义新对象等于一个对象,并取消二个对象的关联

本文探讨了在使用Vue和Element UI开发表单时,如何避免因对象引用而导致的数据同步修改问题。通过对比浅拷贝和深拷贝的使用效果,详细解释了Object.assign方法的基本用法及局限性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境复现

在使用vue和element开发表单时,创建新对象b=原始数据a,修改b对象中的参数会导致a也被同步修改,导致页面参数有问题,具体例子如下:

var a = {'a':11,'b':22};
var b = a;
b['a']= 33;
console.log('a',a);
console.log('b',b);

结果如下:修改b的时候,a也被影响了,同步被修改了,这也就是导致为什么页面上的元素也会影响的原因。
在这里插入图片描述

解决办法

使用Object.assign(target, …sources) 方法,详细可以点击查看

var a = {'a':11,'b':22};
var c = Object.assign({}, a)
c['b'] = 55;
console.log('a',a);
console.log('c',c);

结果如下:在修改c的时候,a并未被修改,二者仅仅是值相等关系,但是设计内部再引用其他对象的修改,此方法也无法保证修改c对a无影响。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值