前端面試經常問到的淺拷貝和深拷貝

2021-10-08 03:25:28 字數 819 閱讀 5344

1.深拷貝、淺拷貝定義概述

淺拷貝的時候如果目標是基本資料型別,就如同直接賦值那種,會拷貝其本身,如果目標是物件,那麼對於淺拷貝而言就只能拷貝其引用,原物件改變,拷貝物件也會隨之改變;

但是深拷貝就會拷貝多層,即使是巢狀了物件,也會都拷貝出來。深拷貝在計算機中開闢了一塊記憶體位址用於存放複製的物件,原物件的改變不會對拷貝出的物件產生影響。

2.兩者的區別:

深拷貝和淺拷貝最根本的區別在於是否是真正獲取了乙個物件的複製實體,而不是引用。

3.實現淺拷貝的方法:

①自定義函式實現(示例拷貝乙個物件:函式裡定義乙個空物件,然後for迴圈將目標物件中的內容偽陣列形式賦給空物件)

②es6:object.assign(,obj) (這是乙個物件合併方法)

③es6:擴充套件運算—let newobj = ;

④引用lodash.js,使用它的_.clone(value)實現

4.實現深拷貝的方法:

①遞迴拷貝(**量大,一般不建議使用)

②json方法拷貝:json.parse、json.stringify(侷限性:不能拷貝函式方法)

③jquery中的extend方法 $.extend(true,[ ]/,a);

④引用lodash.js,使用它的_.clonedeep(value)實現

⑤自定義函式拷貝

前端的深拷貝和淺拷貝 前端面試 深拷貝和淺拷貝

面試題目 如何實現對乙個陣列或物件的淺拷貝和深拷貝?wtf,複製還分兩種,第一次遇到這種問題的時候很是無語呢,先來看看一般的答案的理解。淺拷貝是只拷貝一層,深層次的物件級別就只拷貝引用。深拷貝是拷貝多層,每一級別的資料都拷貝出來。也就是說,基本資料型別其實不存在深淺拷貝的問題,只有物件和陣列才存在深...

前端面試之淺拷貝深拷貝

淺拷貝 定義 對於字串型別,淺複製是對值的複製,對於物件來說,淺複製是對物件位址的複製,並沒 有開闢新的棧,也就是複製的結果是兩個物件指向同乙個位址,修改其中乙個物件的屬性,則另乙個物件的屬性也會改變 方法 1,object.assign es6中拷貝物件的方法,接受的第乙個引數是拷貝的目標targ...

前端的深拷貝和淺拷貝 深拷貝與淺拷貝的區別

淺拷貝的方式 淺拷貝1 var obj var newobj obj newobj.name 李四 console.log obj console.log newobj 淺拷貝2 object.assgin 引數1 目標物件 引數2 任意多個物件 如果物件是多層的話 var obj var obj1...