为什么是这个结果?
test.a的值为什么也变了?
怎么才能让test.a的值不变?
已解决
悬赏分:40
- 解决时间 2021-11-26 20:32
点赞 0反对 0举报 0
收藏 0
分享 0
回答3
最佳
-
需要拷贝才行
this.b = Object.assign({},this.a)
这样改变this.b.val的值 不会改变到this.a.val的值支持 0 反对 0 举报2021-11-26 09:47
-
因为变量this.a的类型是Object,Object赋值的方式是地址引用,即this.b = this.a,将this.a赋值给this.b后,this.b的内存地址指向了this.a,因此修改this.b的属性也会修改this.a的属性。
假设你需要将this.a赋值给this.b,并且修改this.b不影响this.a,则需要用到对象克隆,详见MDN文档-Object.assign()。克隆还分深克隆和浅克隆,可参考30seconds-deepClone。
支持 0 反对 0 举报2021-11-26 12:22