在vue中,在data裏建立兩個對象。
data() {
return {
dataA:{
a:1
},
dataB:''
}
};
將dataA的內容賦值給dataB,改變dataB裏對象的值,發現dataA裏的值也跟着變化了。爲什麼會出現這種情況呢?其實,這是一個引用傳遞而不是值傳遞,dataA和dataB指向的是同一個內存地址。
this.dataB = this.dataA;
this.dataB.a = 5;
console.log( this.dataA.a);//返回5
console.log( this.dataB.a);//返回5
如果我們不想讓dataA的值跟着聯動變化,應該怎麼做呢?可以先把dataA轉換成字符串,然後在轉換成對象,代碼如下:
this.dataB = JSON.parse(JSON.stringify(this.dataA));
this.dataB.a = 5;
console.log( this.dataA.a);//返回1
console.log( this.dataB.a);//返回5