js中的深複製與淺複製

2021-10-05 03:13:53 字數 1632 閱讀 3623

二者的區別

深複製只複製物件的值,在複製後指向不同的位址,但兩個物件的值相同

淺複製複製的是物件的位址,在複製後指向同乙個位址,兩個物件的位址與值都相同

淺複製

let a =

;let b = a;

console.

log(a);//

console.

log(b)

;//

如果改變b的name屬性,會發現a的name屬性也會改變

let a =

;let b = a;

b.name =

'bcd'

console.

log(a)

;//

深複製使用深複製,不會改變原始的值

通過json物件實現深複製

let a =

;//物件

let b =

json

.stringify

(a);

//字串

let c =

json

.parse

(b);

//物件

c.name =

'c';

//改名字

console.

log(a.name)

;//a

console.

log(c.name)

;//c

通過object.assign(),只能深複製一級屬性,淺複製二級屬性

let a =};

//物件

for in 遞迴複製

let a =}}

function

deepclone

(obj)

;//判斷obj的資料型別是否為陣列

js中的深複製與淺複製

前言 所謂深複製與淺複製 深拷貝與淺拷貝 乍一聽感覺聽高大上,像是乙個非常難理解的概念,其實我們平常專案開發都是在用的,只是你可能不知道該怎麼叫它的名字而已,就像你聽熟了一首歌,就是不知道這首歌叫什麼名字一樣。在j ascript中有兩種資料型別,一種是基本型別,另一種是引用型別,今天說討論的深複製...

js深複製淺複製

深淺複製主要是針對於js的引用資料型別的,因為他們不只一層,並且修改乙個變數是不希望修改到另外乙個變數。淺複製 只複製指向某個物件的指標,新舊物件共享一塊記憶體,修改新物件會改到原物件上。深複製 不共享記憶體,修改新物件不會改到原物件上。淺複製實現 js 簡單的賦值操作一般實現的都是淺複製。深複製實...

淺複製與深複製

舉個複製 的例子 function clone p,s for var prop in p return s var a var b clone a,b b.hobby 1 reading b.hobby 1 reading c.hobby 1 reading 由上面的例子可以看出,當執行淺複製時,...