一个js问题

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

已解决 悬赏分:40 - 解决时间 2021-11-26 20:32
反对 0举报 0 收藏 0

回答3

最佳
  • @

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

    支持 0 反对 0 举报
    2021-11-26 09:47
  • @

    this.b={}

    支持 0 反对 0 举报
    2021-11-26 11:11
  • @

    因为变量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