JS淺拷貝 深拷貝

2021-10-19 16:07:53 字數 960 閱讀 5225

1,前景提要:

(1)數字在被複製後,再修改時,不會改變原值:

var a=5;

var b=a;

b=7;

console.log(a)

; // a不變

(2)物件在被複製後,再修改時,會改變原值:

var a =

;var b = a;

b.name=

"hi"

;console.log(a)

; // a.name =

"hi"

2,淺拷貝:拷貝一層物件。深拷貝:拷貝多層物件

3,方法:

(1)object.assign( ):

var a =

;var b = object.assign(

, a)

;b.name =

"hi"

;console.log( a )

; // a.name不變

ps,適合淺拷貝

(2)擴充套件運算子:

var a =

;var b =

;b.name =

"hi"

;console.log( a )

; // a.name不變

ps,適合淺拷貝

(3)json.parse( ) + json.stringify:

var a =

} var b = json.parse(json.stringify(a))

; b.info.name =

"hi"

; console.log(a)

; // a.info.name不變

ps,適合深拷貝

(4)for in & 遞迴:

略,詳情參考:

js淺拷貝深拷貝

js淺拷貝深拷貝 對於想要複製的物件,如果物件裡面對應的值都是基本資料型別的,可以直接複製 也就是通過淺拷貝複製。如果對應的值有物件那麼淺拷貝是行不通的。會造成資料汙染。下面介紹淺拷貝與深拷貝實現方法。1.淺拷貝 let tem let copy for let key in tem 2.通過obj...

淺拷貝,深拷貝 js

堆和棧 基本型別 存放在棧中的簡單資料段,資料大小確定,記憶體空間大小可以分配。6種基本資料型別 undefined null boolean number和string,es6新增屬性symbol.他們是直接按值存放的,所以可以直接訪問。引用型別 存放在堆記憶體中的物件,變數實際儲存的是乙個指標,...

js淺拷貝 深拷貝

1.概述 淺拷貝只是拷貝一層,針對於更深層次的物件級別的資料,只是拷貝引用,因此拷貝之後再修改物件資料時,會把原來的資料一併進行修改操作。深拷貝拷貝多層,每一級別的資料都會拷貝,而物件級別的資料則會另開闢新的空間 2.淺拷貝 es6新增方法實現淺拷貝 object.assign target,sou...