js object对象赋值bug和对象复制clone方法

本文通过实例展示了JavaScript中对象赋值时传递引用的问题,并提供了一种递归实现的深拷贝方法来解决这一问题,确保了新旧对象间的独立性。

最近在写程序的时候发现,如果新建一个object对象objb,初始化值为obja,如果改变了objb对象的字段值,那么obja也会随之改变,看来对象赋值传递的是一个引用。

代码重现:

 1 <script>
 2     var obja = {
 3         'apple':{'key':'apple','name':'苹果'},
 4         'banana':{'key':'banana','name':'香蕉'},
 5     };
 6 
 7     var objb = obja;
 8 
 9     console.log(obja);
10     delete(objb['apple']);
11     console.log(obja);
12 </script>

执行结果:

Object {apple: Object, banana: Object}
Object {banana: Object}

解决办法clone,生成一个新的对象,而不是对原对象的引用。

代码如下:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kingofyz

此处弱弱求打赏~~万一有好心人

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值