为什么是这个结果?
test.a的值为什么也变了?
怎么才能让test.a的值不变?
因为变量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。
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答5.2k 阅读✓ 已解决
1 回答3.4k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
需要拷贝才行
this.b = Object.assign({},this.a)
这样改变this.b.val的值 不会改变到this.a.val的值