原因:JavaScript 中對象的賦值是默認引用賦值的(兩個對象指向相同的內存地址)
解決方案1:
用 JSON.stringify 把對象轉換成字符串,再用 JSON.parse 把字符串轉換成新的對象
function deepClone(obj){ return JSON.parse(JSON.stringify(obj)); }
解決方案2:
Object.assign()拷貝
當對象中只有一級屬性,沒有二級屬性的時候,此方法為深拷貝,但是對象中有對象的時候,此方法,在二級屬性以后就是淺拷貝。
let obj1 = {'name': 'hello world'}; let obj2 = Object.assign({},obj1); let arr1 = [1,2,3,4,5]; let arr2 = Object.assign([],arr1);