html52.com
我爱小程序-开发者交流社区

这样的操作为什么能直接修改data里的数据?


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)
 
      },
 
   
})


网友回复

Y:

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

G-STEPS街舞工作室:

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

Vagrant:

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

鲤子:

浅拷贝跟深拷贝的问题

星星海:

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

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

真正的个人免签约支付接口

云免签H5支付