问题描述:
小程序js文件中,在data中定义两个数据,settingData和defaultSettingData都是空对象,如图

在页面初始化时,就为两个数据赋值

之后,我去单独修改settingData的时候,defaultSettingData也跟着一起改变了,并且和settingData一模一样。

解决:
原来问题在于初始化赋值时,我为两个数据赋得同一个值,导致两个对象只是指向了同一个对象,只是一次浅拷贝,不论修改哪个,另一个都会跟着一起变。
所以,最后解决的办法就是把其中一个数据进行深拷贝,这样不论如何修改,都不会相互影响了。
小程序可以使用es6的展开运算符,可以实现数据的分离。当然也可以使用JSON.stringify和JSON.parse(如果可以的话)。

最后,我改变了defaultSettingData的拷贝方式,就成功了。
这种将一份数据同时保存成两份的情况也比较少见,暂且记录一下吧!
本文介绍了一位开发者在小程序JS文件中遇到的问题:当在data中定义了两个对象并试图独立修改它们时,发现修改其中一个对象会导致另一个对象也发生变化。文章详细解释了这个问题的原因在于对象之间的引用关系,并提供了使用深拷贝来解决问题的方法。
2万+

被折叠的 条评论
为什么被折叠?



