現(xiàn)象:
開發(fā)vue項(xiàng)目的過程中,需要多次用到一份基礎(chǔ)數(shù)據(jù),為減少代碼量,提高一下復(fù)用效果,便用變量A來定義,在項(xiàng)目中需要用到時就用變量A進(jìn)行賦值。
在項(xiàng)目中調(diào)用時,我新定義一個變量B,再將變量A賦值給變量B,即B=A;
期望的效果是,賦值之后,A和B是兩份數(shù)據(jù),對變量B進(jìn)行操作時不影響變量A,結(jié)果發(fā)現(xiàn)想的是一回事,敲出來的完全是另一回事,修改B變量時A變量也跟著改變了。

原因:
請教了一下大佬,我們期待的是,B從A變量copy出一份數(shù)據(jù),變成兩份一樣的基礎(chǔ)數(shù)據(jù),操作B而不影響A,讓A始終保持原滋原味。但是B=A的方式只是將B指向A的存儲地址,實(shí)際上只有同一份數(shù)據(jù),因此無論修改A還是B都是會互相影響的。
解決方法:
B = JSON.parse(JSON.stringify(A))
先用SON.stringify(A)從A對象中解析出字符串,再用JSON.parse()將解析出的字符串轉(zhuǎn)換成JSON對象,這樣就會獲得兩份相同的數(shù)據(jù)啦,對B進(jìn)行操作就不會影響到A啦
浙公網(wǎng)安備 33010602011771號