現象:
開發vue項目的過程中,需要多次用到一份基礎數據,為減少代碼量,提高一下復用效果,便用變量A來定義,在項目中需要用到時就用變量A進行賦值。
在項目中調用時,我新定義一個變量B,再將變量A賦值給變量B,即B=A;
期望的效果是,賦值之后,A和B是兩份數據,對變量B進行操作時不影響變量A,結果發現想的是一回事,敲出來的完全是另一回事,修改B變量時A變量也跟着改變了。
原因:
請教了一下大佬,我們期待的是,B從A變量copy出一份數據,變成兩份一樣的基礎數據,操作B而不影響A,讓A始終保持原滋原味。但是B=A的方式只是將B指向A的存儲地址,實際上只有同一份數據,因此無論修改A還是B都是會互相影響的。
解決方法:
B = JSON.parse(JSON.stringify(A))
先用SON.stringify(A)從A對象中解析出字符串,再用JSON.parse()將解析出的字符串轉換成JSON對象,這樣就會獲得兩份相同的數據啦,對B進行操作就不會影響到A啦