最近在写程序的时候发现,如果新建一个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

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

被折叠的 条评论
为什么被折叠?



