理解js中深拷貝、淺拷貝。

歡迎大家閱覽我的文章、感謝!

你好!這是一篇關於javaScript深、淺拷貝的文章、做前端的小夥伴都應該有所瞭解、如有不正確的地方,歡迎各位大佬糾正。如果你正巧翻到這篇文章,希望你不要關閉,花出10多分鐘仔細閱讀,我相信你一定能看懂,並且進行實際代碼練習,一定能掌握並老記。

淺拷貝

簡單的說,淺拷貝就是對一個對象的地址的複製,並沒有開闢新的棧,也就是複製的結果是兩個對象指向同一個地址,修改其中一個對象的屬性,則另一個對象的屬性也會改變。

深拷貝

深拷貝就是開闢新的棧,兩個對象對應兩個不同的地址,修改一個對象的屬性,不會改變另一個對象的屬性。

舉例子

淺拷貝:
深拷貝:

先看下面的代碼:

var original = {
	name: '騰',
	age: 18,
	position: '工程師',
};

假如我們要創建一個這個對象的副本(複製),這樣即使原始被改變過的話,依舊可以通過副本得到原始對象的值。
這樣:

var duplicate = original; // 淺拷貝

試着改變一個值:

original.name = '瑩';

這樣的話,原始對象original的屬性name會跟着變成“瑩”,因爲這是一個淺拷貝,這樣就獲取不到原始對象原來那個值了。所以這麼做是不正確的。

但是,通過用原始original變量的屬性創建一個全新的變量,就能創建一個深拷貝副本。
看代碼:

var duplicate = {
	name: original.name,
	age: original.age,
	position: original.position
}; // 深拷貝

現在,如果更改duplicate.name,只是影響duplicate,不會影響original。

在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章