js中,深拷貝和淺拷貝是什麼?

2021-10-11 14:32:50 字數 1153 閱讀 6744

淺拷貝只是拷貝一層, 更深層次物件級別的只拷貝引用. 不拷貝位址

var obj =};

var o =

;for

(var k in obj)

console.

log(o)

; o.msg.age =20;

console.

log(obj)

; console.

log(

'--------------');

object.

assign

(o, obj)

;//淺拷貝的語法糖

console.

log(o)

; o.msg.age =20;

console.

log(obj)

; 結果

id:1,

name:

'andy'

, msg:

淺拷貝修改的話,原來的物件也被修改,他們共用乙個位址;

// 深拷貝拷貝多層, 每一級別的資料都會拷貝.

var obj =

, color:

['pink'

,'red']}

; var o =

;// 封裝函式

function deepcopy

(newobj, oldobj)

else

if(item instanceof object)

;deepcopy

(newobj[k]

, item)

}else}}

deepcopy

(o, obj)

; console.

log(o)

; var arr =

; console.

log(arr instanceof object)

; o.msg.age =20;

console.

log(obj)

;<

/script>

深拷貝拷貝多層, 每一級別的資料都會拷貝.

JS深拷貝和淺拷貝

js中物件分為基本型別和復合 引用 型別,基本型別存放在棧記憶體,復合 引用 型別存放在堆記憶體中 堆記憶體中用於存放由new建立的物件,棧記憶體存放一些基本型別的變數和物件的引用變數 對於簡單變數,記憶體小,直接複製不會發生引用 var a 123 var b a a 123456 console...

JS淺拷貝和深拷貝

1.淺拷貝 copy var obj1 物件存放於堆記憶體中,物件中的鍵值對,值可以為物件,可以為陣列.var obj2 obj1 物件,陣列之間只有引用賦值 obj2.name 撒哈哈 當改動物件obj2的時候,obj1的key對應的value也會更改這是淺拷貝 深拷貝 var obj1 var ...

js深拷貝和淺拷貝

走在前端的大道上 var m var n m n.a 15 這時m.a的值是多少 m.a會輸出15,因為這是淺拷貝,n和m指向的是同乙個堆,物件複製只是複製的物件的引用。深拷貝和上面淺拷貝不同,就是徹底copy乙個物件,而不是copy物件的引用,例如,還是之前的例子,我們這麼寫 var m var ...