Js 物件導向 淺拷貝和深拷貝

2021-10-09 04:33:12 字數 1736 閱讀 3211

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

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

object.assign( target, … sources) es6 新增方法可以淺拷貝

淺拷貝原始碼:

<

!doctype html>

"en"

>

"utf-8"

>

"viewport" content=

"width=device-width, initial-scale=1.0"

>

document<

/title>

<

/head>

// assign( o,obj ) es6新增 淺拷貝 方法

var obj =

}var o =

; object.

assign

(o, obj)

; console.

log(o)

; console.

log(obj)

; console.

log(

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

o.id =3;

console.

log(o)

; console.

log(obj)

;// 深層資料的時候改變o,obj跟著變化了,因為淺拷貝只拷貝引用

console.

log(

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

o.msg.id =13;

console.

log(o)

; console.

log(obj)

;<

/script>

<

/body>

<

/html>

深拷貝封裝了乙個deep_copy函式,利用函式遞迴:

<

!doctype html>

"en"

>

"utf-8"

>

"viewport" content=

"width=device-width, initial-scale=1.0"

>

document<

/title>

<

/head>

// 深拷貝 封裝函式

var obj =

}var o =

;function

deep_copy

(newobj, oldobj)

else

if(val instanceof

object);

deep_copy

(newobj[k]

, val);}

else}}

deep_copy

(o, obj)

console.

log(o)

; o.arr.id =12;

console.

log(obj)

;<

/script>

<

/body>

<

/html>

有用的話記得點讚,收藏噢,筆記–歡迎批評指正。

js物件淺拷貝和深拷貝

1 淺拷貝 varobj 定義乙個物件 functioncopy obj 定義乙個空物件,用來儲存key和value for varkeyinobj returnnewobj 將新物件作為返回值,返回到外面 varobj2 copy obj 將obj複製給obj2 obj2.a 20 改變obj2中...

js 物件深拷貝 深拷貝與淺拷貝

前言 最近在複習一些面試的知識點,剛剛好複習到了這一部分,於是就寫下這篇文章記錄一下。一 值型別和引用型別 在學習深拷貝和淺拷貝之前,我們先來了解一下js的變數型別。值型別 vs 引用型別 值型別 值型別主要有 number,string,boolean,symbol,null,undefined ...

js物件之淺拷貝和深拷貝

淺拷貝依次遍歷內容,依次賦值 var p var k console.log p console.log k for let key in p console.log p console.log k 使用object.assign 方法,這個方法的作用 問題來,你這樣依次拷貝出現的問題就是物件裡面含...