javascript克隆對(duì)象深度介紹
基本類(lèi)型(包括undefined,Null,boolean,String,Number),按值傳遞;
引用類(lèi)型(包括數(shù)組,對(duì)象),按址傳遞,引用類(lèi)型在值傳遞的時(shí)候是內(nèi)存中的地址。
克隆或者拷貝分為2種:
淺度克?。夯绢?lèi)型為值傳遞,對(duì)象仍為引用傳遞。
深度克隆:所有元素或?qū)傩跃耆寺?,并于原引用?lèi)型完全獨(dú)立,即,在后面修改對(duì)象的屬性的時(shí)候,原對(duì)象不會(huì)被修改。
function cloneObject(obj){
var o = obj.constructor === Array ? [] : {};
for(var i in obj){
if(obj.hasOwnProperty(i)){
o[i] = typeof obj[i] === "object" ? cloneObject(obj[i]) : obj[i];
}
}
return o;
}
另:如果是一個(gè)簡(jiǎn)單的數(shù)組,元素中沒(méi)有引用類(lèi)型的值,可以直接用array.concat();或者array.slice(0);來(lái)深度拷貝一個(gè)數(shù)組,這樣簡(jiǎn)單又高效。數(shù)組的concat()和slice()本來(lái)就會(huì)生成一個(gè)新的數(shù)組,原來(lái)的數(shù)組不會(huì)受影響。但是要注意的是你要確保被拷貝的數(shù)組中元素中沒(méi)有引用類(lèi)型的值。
這是另一種深度克隆的方法,很簡(jiǎn)單,很實(shí)用:
var s = JSON.stringify( obj );
var o = JSON.parse( s );
相關(guān)文章
javascript學(xué)習(xí)筆記(二) 鼠標(biāo)經(jīng)過(guò)時(shí),改變div塊的背景色的代碼
javascript學(xué)習(xí)筆記(二) 鼠標(biāo)經(jīng)過(guò)時(shí),改變div塊的背景色的實(shí)現(xiàn)代碼,當(dāng)然也可以用css實(shí)現(xiàn)。2011-04-04JavaScript中使用Math.floor()方法對(duì)數(shù)字取整
這篇文章主要介紹了JavaScript中使用Math.floor()方法對(duì)數(shù)字取整,是JS入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-06-06JavaScript學(xué)習(xí)筆記整理_setTimeout的應(yīng)用
下面小編就為大家?guī)?lái)一篇JavaScript學(xué)習(xí)筆記整理_setTimeout的應(yīng)用。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-09-09JavaScript操作數(shù)組的常用方法總結(jié)
這篇文章總結(jié)了JavaScript操作數(shù)組的常用方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06關(guān)于什么是javascript模塊化以及為何使用模塊化開(kāi)發(fā)
這篇文章主要介紹了關(guān)于什么是javascript模塊化以及為何使用模塊化開(kāi)發(fā),模塊化是一種軟件開(kāi)發(fā)的設(shè)計(jì)模式,它將一個(gè)大型的軟件系統(tǒng)劃分成多個(gè)獨(dú)立的模塊,每個(gè)模塊都有自己的功能和接口,需要的朋友可以參考下2023-04-04js鼠標(biāo)點(diǎn)擊事件在各個(gè)瀏覽器中的寫(xiě)法及Event對(duì)象屬性介紹
各個(gè)主流瀏覽器德鼠標(biāo)點(diǎn)擊事件,方便使用時(shí)查詢(xún),整理還算是很詳細(xì)吧,感興趣的你可以參考下啊,希望本文對(duì)你有所幫助2013-01-01JavaScript程序中實(shí)現(xiàn)繼承特性的方式總結(jié)
JavaScript是一門(mén)強(qiáng)行聲稱(chēng)面向?qū)ο蟮恼Z(yǔ)言,而繼承是面向?qū)ο蟮囊淮笾饕匦?這里我們根據(jù)阮一峰老師的文章來(lái)看一下JavaScript程序中實(shí)現(xiàn)繼承特性的方式總結(jié)2016-06-06