收藏
回答

page外设置一个初始化变量?setdata后初始变量的值也变化了?

为什么我在page外设置一个变量X作为初始化变量,第一次赋值后通过setdata修改后X的值也变化了。。

怎么在页面内设置变量 而 保障它不会被setdata改变。。

const X= {a:1};

this.setData({
  asd:X
});
//操作后
this.setData({
  [`asd.a`]:2
});
//这时候X.a 的值 为什么变成 2 了;;

试了好几种办法 X 还是会被改变。除非一开始就单独设置X1和X2。。。

回答关注问题邀请回答
收藏

2 个回答

  • 卢霄霄
    卢霄霄
    发表于小程序端
    2021-04-16

    对象 是引用类型

    2021-04-16
    有用 2
    回复 1
    • dawn_ing
      dawn_ing
      2021-04-19
      谢谢。
      2021-04-19
      回复
  • 猛男陈阔
    猛男陈阔
    2021-04-17

    他们两个指向的都是原对象的地址,所以通过其中的一个去修改值时其实是修改他们指向的那个对象。

    this.setData({
     asd:JSON.parse(JSON.stringify(X))
    })
    
    2021-04-17
    有用 1
    回复 2
    • dawn_ing
      dawn_ing
      2021-04-19
      谢谢!!!原来是这样。为什么修改的不是this.data里面的而是原对象呢。(基础很差,不太懂为啥)
      2021-04-19
      回复
    • dawn_ing
      dawn_ing
      2021-04-19回复dawn_ing
      -0 -结合楼上的话 现在懂了。。。感谢解答
      2021-04-19
      回复
登录 后发表内容
问题标签