JS陣列,物件的深拷貝

2021-08-22 13:37:44 字數 623 閱讀 3425

在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...