問題:
在通過 let a = b 將b數據賦值給a,通過a修改a的值如:a.id = 1,b的id也會變為1。
原因:
在VUE中【=】在對象賦值里面,沒有進行深層賦值,【let datas】指向的依舊是【datas】里面的原地址,所以修改了【let datas】里面的屬性,【datas】里面的屬性也會發生改變。
解決方法
方法一:
創建一個新的對象,指向新的內存地址,通過JSON解析。同 handleClick2
let datas = JSON.parse(JSON.stringify(this.datas));
方法二:
es6之展開Object.assign(拷貝obj的內容到一個新的堆內存,copyObj存儲新內存的引用),同handleClick3
let datas = Object.assign({},this.datas);
方法三:
es6之展開運算符(僅用於數組)同handleClick4
let copyArr = [...obj];
此貼僅為記錄。
原帖地址:https://www.cnblogs.com/e0yu/p/14972775.html