淺拷貝與深拷貝

2021-08-21 01:30:36 字數 669 閱讀 4374

注意:拷貝的物件是object型別,一定要確保是引用型別。

1、定義:

*拷貝:複製乙份,只將物件資料複製,拷貝物件的屬性值的變化,不會影響原物件。

*深拷貝:拷貝時,將資料的所有引用結構都拷貝乙份。

*淺拷貝:拷貝時,只針對當前物件的屬性進行拷貝,那就是淺拷貝。

2、**演示

var car = ;

var p = ;

var pcopy = p;        //這個不是拷貝,沒有對物件做任何操作

//淺拷貝的**展示:

var pcopy = {};

pcopy.name= p.name;

pcopy.age = p.age;

pcopy.car = p.car;

//深拷貝的**展示:

var pcopy = {};

pcopy.name= p.name;

pcopy.age = p.age;

pcopy.car.name = p.car.name;

2、**的封裝

*利用物件導向的思想,一般會讓物件帶有乙個copy的方法,來完成自己的拷貝

*this在函式體中,表示呼叫該函式方法的物件

*可以通過瀏覽器除錯視窗分析**

「淺拷貝」與「深拷貝」

c 中物件的複製就如同 轉殖 用乙個已有的物件快速地複製出多個完全相同的物件。一般而言,以下三種情況都會使用到物件的複製 1 建立乙個新物件,並用另乙個同類的已有物件對新物件進行初始化,例如 cpp view plain copy class rect rect rect1 rect rect2 r...

淺拷貝與深拷貝

淺拷貝 1 2 myclass a,b a b 為了封裝性和解耦,同型別的兩個物件之間進行賦值操作時,所有成員變數被複製,包括私有成員 指標變數。類的成員函式在傳遞或返回物件時都會進行物件複製產生臨時物件,比如函式呼叫時實參變為形參,以及函式返回物件。考慮到效能和使用者要求不同,編譯器不複製物件內部...

「淺拷貝」與「深拷貝」

c 中物件的複製就如同 轉殖 用乙個已有的物件快速地複製出多個完全相同的物件。一般而言,以下三種情況都會使用到物件的複製 1 建立乙個新物件,並用另乙個同類的已有物件對新物件進行初始化,例如 cpp view plain copy class rect rect rect1 rect rect2 r...