Vue爬坑:把對象中的數據給了某個變量,改變一個對象的值,另一個對象也變化的解決辦法!

在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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章