首先說下引用和傳值的條件區(qū)別
引用:
object(對象)??? array(數(shù)組)這兩個類型進行等于賦值的時候?qū)嶋H上是進行的引用艘蹋,源數(shù)據(jù)改變后目標數(shù)據(jù)也就發(fā)生了變換
傳值:
? string number boolean這幾個類型進行賦值的時候是進行的傳值,并不會跟著源數(shù)據(jù)的變換目標數(shù)據(jù)發(fā)生改變
比如
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會發(fā)現(xiàn)之前添加的第一條也發(fā)生變化了票灰、
這里是因為dataForm2是在引用dataForm1的值而不是傳遞
解決方法
this.dataForm2=JSON.parse(JSON.stringify(this.dataForm1))
————————————————
版權聲明:本文為CSDN博主「前端惡霸」的原創(chuàng)文章女阀,遵循CC 4.0 BY-SA版權協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明屑迂。
原文鏈接:https://blog.csdn.net/weixin_41916005/java/article/details/86008022