【转】vue改变一个变量值关联的变量也变换解决方法(引用和传值)

首先说下引用和传值的条件区别

引用:

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。