二者的區別
深複製只複製物件的值,在複製後指向不同的位址,但兩個物件的值相同
淺複製複製的是物件的位址,在複製後指向同乙個位址,兩個物件的位址與值都相同
淺複製
如果改變b的name屬性,會發現a的name屬性也會改變let a =
;let b = a;
console.
log(a);//
console.
log(b)
;//
深複製使用深複製,不會改變原始的值let a =
;let b = a;
b.name =
'bcd'
console.
log(a)
;//
通過json物件實現深複製
通過object.assign(),只能深複製一級屬性,淺複製二級屬性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
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 由上面的例子可以看出,當執行淺複製時,...