这样的操作为什么能直接修改data里的数据?
发布于 5 年前 作者 zyuan 6949 次浏览 来自 官方Issues

Page({

  data: {

        test:{ a:1, b:2 }

    },

onLoad: function (options) {

              let t=this.data.test;

              t.b=3

     },

})

为什么AppData(下图) test里的b是3?

这是什么原因, 望告知~

结贴:这是我要的

Page({
 
    data: {
        test:{ a:1, b:2 }
      },
 
    onLoad: function (options) {
        let t=this.data.test,
        k = JSON.parse(JSON.stringify(t))
        k.b=3
      
 
      console.log(t,k)
 
      },
 
   
})
6 回复

this.data.test这不是赋值了?

浅拷贝跟深拷贝的问题

没函数的话试试这个JSON.parse(JSON.stringify(XXXX))

结贴:无满意回答 ,执行数组拷贝,单独赋值 即可实现操作t变量且不影响data 数据

可以直接设置 this.data 的值,只是如果不调用 setData 方法,数据改变了页面不会刷新

加载后你data里面你设置修改data.b=3了他就打印3

回到顶部