JS 物件陣列淺拷貝,深拷貝

2021-10-24 17:38:27 字數 1954 閱讀 5741

物件陣列的深拷貝與淺拷貝,簡單點來說,就是b複製了a,當a被修改時,未操作b,但b也跟著變了,就是淺拷貝,反之是深拷貝

深拷貝本身只針對較為複雜的object型別資料

淺拷貝

var a=[,

];var b=a;a[1

].age=18;

console.

log(a,b)

;

執行結果,a,b的age都發生了改變

偽深拷貝,仍然是淺拷貝 slice

只對陣列第一層有效

有缺陷的深拷貝它的主要缺點是,只限於處理可被 json.stringify() 編碼的值。

json.stringify()將編碼 json 支援的值。包含 boolean,number,string,以及物件,陣列。其他任何內容都將被特殊處理。

functionsymbol時,它被忽略掉

infinityundefinednan會被變成 null

date物件會被轉化為 string (預設呼叫date.toisostring())

深拷貝

jquery方法深拷貝

$.

extend

([deep]

,target,object1[

,objectn]

)

deep表示是否深拷貝,為true為深拷貝,為false,則為淺拷貝

targetobject型別 目標物件,其他物件的成員屬性將被附加到該物件上。

object1objectn可選。 object型別 第乙個以及第n個被合併的物件

b=$.

extend

(true,[

],a)

;

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

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

js物件淺拷貝和深拷貝

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

js物件淺拷貝與深拷貝

在js中,如果乙個物件,作為變數賦值給另乙個物件,那麼兩個物件得值會是相同得引用位址,其中乙個改變,另外乙個也會隨之改變。var obj1 var obj2 obj1 obj2.num 456 console.log obj1.num 輸出 456 複製 在我們日常開發過程當中,我們去複製乙個物件得...