淺複製:淺複製是複製引用,複製後的引用都是指向同乙個物件的例項,彼此之間的操作會互相影響
深複製:深複製不是簡單的複製引用,而是在堆中重新分配記憶體,並且把源物件例項的所有屬性都進行新建複製,以保證深複製的物件的引用圖不包含任何原有物件或物件圖上的任何物件,複製後的物件與原來的物件是完全隔離的
//util作為判斷變數具體型別的輔助模組
var util = (function();
["null","undefined","number","boolean","string","object","function","array","regexp","date"].foreach(function(item))
function istype(obj, type)
function gettype(obj)
return
})();
function copy(obj,deep)
//定義需要的區域性變臉,根據obj的型別來調整target的型別
var i, target = util.istype(obj,"array") ? : {},value,valuetype;
for(i in obj)else
}return target;
}
js深複製淺複製
深淺複製主要是針對於js的引用資料型別的,因為他們不只一層,並且修改乙個變數是不希望修改到另外乙個變數。淺複製 只複製指向某個物件的指標,新舊物件共享一塊記憶體,修改新物件會改到原物件上。深複製 不共享記憶體,修改新物件不會改到原物件上。淺複製實現 js 簡單的賦值操作一般實現的都是淺複製。深複製實...
js中的深複製與淺複製
二者的區別 深複製只複製物件的值,在複製後指向不同的位址,但兩個物件的值相同 淺複製複製的是物件的位址,在複製後指向同乙個位址,兩個物件的位址與值都相同 淺複製 let a let b a console.log a console.log b 如果改變b的name屬性,會發現a的name屬性也會改...
js中的深複製與淺複製
前言 所謂深複製與淺複製 深拷貝與淺拷貝 乍一聽感覺聽高大上,像是乙個非常難理解的概念,其實我們平常專案開發都是在用的,只是你可能不知道該怎麼叫它的名字而已,就像你聽熟了一首歌,就是不知道這首歌叫什麼名字一樣。在j ascript中有兩種資料型別,一種是基本型別,另一種是引用型別,今天說討論的深複製...