什麼深拷貝和淺拷貝,及詳解

2021-10-24 20:28:11 字數 472 閱讀 4015

var obj = 

};淺拷貝,僅僅是指標給了另乙個物件,兩個物件有乙個發生改變對方都可以感受到

var obj1 = obj;

obj1.name = '小辣椒';

console.log(obj);

列印結果:

console.log(obj1);

列印結果:

深拷貝:兩個物件之間沒有任何關係,兩個物件怎麼改變都沒有影響

var obj1 = json.stringify(obj);

obj1 = json.parse(obj1);

obj1.name = '小番茄';

obj感受不到變化

console.log(obj);

列印結果:

注意:用json實現深拷貝會造成方法丟失

console.log(obj1);

列印結果:

淺拷貝和深拷貝具體詳解

當用乙個已經初始化了的自定義類型別物件去初始化另乙個新構造的物件的時候,拷貝建構函式就會被自動呼叫,也就是說,當類的物件需要拷貝時,拷貝建構函式將會被呼叫。以下情況都會呼叫拷貝建構函式 1 乙個物件以值傳遞的方式傳入函式體 2 乙個物件以值傳遞的方式從函式返回 3 乙個物件需要通過另乙個物件進行初始...

python 深拷貝和淺拷貝詳解

指向 賦值語句 b a,淺拷貝 對於乙個物件的頂層拷貝,拷貝了引用,並沒有拷貝內容copy.copy copy.copy 拷貝的是不可變型別 數字,元祖 那麼它不會進行淺拷貝,僅僅是指向 深拷貝 copy.deepcopy 只要有可變型別時,都會複製 如果用copy.copy copy.deepco...

深拷貝和淺拷貝

淺拷貝就是物件的資料成員之間的簡單賦值,如你設計了乙個沒有類而沒有提供它的複製建構函式,當用該類的乙個物件去給令乙個物件賦值時所執行的過程就是淺拷貝,如 class a a private int data int main 這一句b a 就是淺拷貝,執行完這句後b.data 5 如果物件中沒有其他...