一个js问题

QQ图片20191221142252.png
为什么是这个结果?
test.a的值为什么也变了?
怎么才能让test.a的值不变?

阅读 2.6k
3 个回答

需要拷贝才行
this.b = Object.assign({},this.a)
这样改变this.b.val的值 不会改变到this.a.val的值

因为变量this.a的类型是ObjectObject赋值的方式是地址引用,即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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题