在项目当中遇到这样一个问题,我是用v-model跟这个addForm绑定一些值,添加一行的时候把这个addForm push到data1里面,可是后来发现,当我改了addForm的属性的时候,data1里面已经push进去的数据也全都会随着addForm的改变而改变,看了好久,恍然大悟,发现会不会是深浅拷贝的问题,试了一下,果然是


1.原理
- 浅拷贝:新对象赋值,只是取的旧对象栈中的值,也就是引用对象的值。上述问题也就是连指向都复制了,所以造成数据全都改变
- 深拷贝:会在堆里边开辟一个空间,存放自己的对象值
2.解决办法
let form = JSON.parse(JSON.stringify(this.addForm));
this.data1.push(form);
JSON.stringify()对象转为串,JSON.parse()串转为对象,JSON操作是深拷贝操作,这样转化一下就好了
本文探讨了在Vue项目中使用v-model时遇到的数据绑定问题,即修改addForm时已push到data1中的数据也随之变化。通过分析深浅拷贝原理,提供了解决方案:利用JSON.stringify和JSON.parse实现深拷贝。
2476

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



