在js中的陣列和物件的賦值操作都是淺拷貝(引用賦值)。
//陣列賦值
let foo=[1,2,3];
let bar=foo;
bar[1]=1;
console.log(foo);//[1,1,3]
//物件賦值
let foo=;
let bar=foo;
bar.a=2;
console.log(foo);//
獻上深拷貝方法
//通用深拷貝方法 不適用於多層
function
clone
(obj)
let foo=[1,2,3];
let bar=clone(foo);
bar[1]=2;
console.log(foo);//[ 1, 2, 3 ] 深拷貝後修改值原來的不會改變
let foo=;
let bar=clone(foo);
bar.a=2;
console.log(foo);//
js陣列,物件深拷貝
無事,封裝了乙個js深拷貝的方法 基本思路 deepcopy data data 可能是陣列也可能是物件 1.判斷data是陣列 物件或者其他資料型別 2.宣告空陣列 或者 空物件 res 3.分別處理 如果陣列元素或物件屬性值不是陣列或物件,空陣列或物件之間接收元素 res.push data i...
js 陣列物件深拷貝
如何區分深拷貝與淺拷貝,簡單點來說,就是假設b複製了a,當修改a時,看b是否會發生變化,如果b也跟著變了,說明這是淺拷貝,拿人手短,如果b沒變,那就是深拷貝,自食其力 我們希望在改變新的陣列 物件 的時候,不改變原陣列 物件 我們在使用深拷貝的時候,一定要弄清楚我們對深拷貝的要求程度 是僅 深 拷貝...
js 陣列物件深拷貝
結論 物件的拷貝不能採用直接賦值的方式。踩過的坑如下 formdata本來是父元件傳過來的,但是我不想直接用,於是我直接賦值給乙個formdatacopy的物件。但是詭異的事情發生了,就是在我填寫自己的表單元件的時候,一旦表單的資料發生的變化時,本來是formdatacopy的值發生變化,但是 fo...