首先说下引用和传值的条件区别
引用:
object(对象) array(数组)这两个类型进行等于赋值的时候实际上是进行的引用,源数据改变后目标数据也就发生了变换
传值:
string number boolean这几个类型进行赋值的时候是进行的传值,并不会跟着源数据的变换目标数据发生改变
比如
data() {
return {
dataForm1:{
number:1
},
dataForm2:[]
}
};
this.dataForm2.push(this.dataForm1);
console.log( this.dataForm2[0].number );//1
这个时候dataForm2中添加dataForm1打印出来的是没有问题的
this.dataForm1.number =120;
this.dataForm2.push(this.dataForm1);
console.log( this.dataForm2[0].number );//120
console.log( this.dataForm2[1].number );//120
然后在添加一条修改过的dataForm1会发现之前添加的第一条也发生变化了、
这里是因为dataForm2是在引用dataForm1的值而不是传递
解决方法
this.dataForm2=JSON.parse(JSON.stringify(this.dataForm1))
————————————————
版权声明:本文为CSDN博主「前端恶霸」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_41916005/java/article/details/86008022
网友评论