vue——赋值后修改,原对象信息也会发生变化


问题:

  在通过  let a = b  将b数据赋值给a,通过a修改a的值如:a.id = 1,b的id也会变为1。

原因:

  在VUE中【=】在对象赋值里面,没有进行深层赋值,【let datas】指向的依旧是【datas】里面的原地址,所以修改了【let datas】里面的属性,【datas】里面的属性也会发生改变。

解决方法

  方法一:

创建一个新的对象,指向新的内存地址,通过JSON解析。同 handleClick2

let datas = JSON.parse(JSON.stringify(this.datas));

  方法二:

es6之展开Object.assign(拷贝obj的内容到一个新的堆内存,copyObj存储新内存的引用),同handleClick3

let datas = Object.assign({},this.datas);

  方法三:

es6之展开运算符(仅用于数组)同handleClick4

let copyArr = [...obj];

 

此贴仅为记录。

原帖地址:https://www.cnblogs.com/e0yu/p/14972775.html

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM