请问微信小程序中,为什么我改变了obj的值,objtmp也会跟着变?

question.png
我不理解的地方在于

1、this.data.xxx = yyy,这样的赋值操作印象中应该可以的啊,因为多用setData会造成性能问题,

我印象中this.data.xxx = yyy这样的赋值方法仅仅是不会即时显示在模版上,而setData是会即时显示在模板上,我的理解有不对的么?

2、如图当我在onload方法中赋值了objtmp后,我没在继续操作这个变量了,为什么在buttonclick方法中我改变obj,也会使得objtmp发生变化?

阅读 2.4k
1 个回答

倒是没有研究过setData的具体实现,但是根据现象猜测setData内部在对data的赋值上依然保留原始的js逻辑,只是会多一个往视图层更新数据的逻辑。也就是说,如果抛开视图,setData({obj: param})等同于 this.data.obj = param;那么就不难理解为什么会出现这样子的情况。以上纯属猜测

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