Javascript中的對像賦值與Java中是一樣的,都為引用傳遞.就是說,在把一個對像賦值給一個變量時,那么這個變量所指向的仍就是原來對像的地址.那怎么來做呢 答案是克隆.
什么是"clone"?
在實(shí)際編程過程中,我們常常要遇到這種情況:有一個對象A,在某一時刻A中已經(jīng)包含了一些有效值,此時可能會需要一個和A完全相同新對象B,并且此后對B任何改動都不會影響到A中的值,也就是說,A與B是兩個獨(dú)立的對象,但B的初始值是由A對象確定的。在Java/javasript語言中,用簡單的賦值語句是不能滿足這種需求的。要滿足這種需求雖然有很多途徑,但實(shí)現(xiàn)clone()方法是其中最簡單,也是最高效的手段,當(dāng)然了 javascript語言中并沒有此方法.
所以我特意寫了兩個克隆方法:一個為淺復(fù)制 ,一個為深復(fù)制.
解釋: 淺復(fù)制(影子克隆):只復(fù)制對象的基本類型,對象類型,仍屬于原來的引用. 深復(fù)制(深度克隆):不緊復(fù)制對象的基本類,同時也復(fù)制原對象中的對象.就是說完全是新對象產(chǎn)生的.
下面是測試代碼: 運(yùn)行代碼框
[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運(yùn)行]
歡迎大家到我們論壇中討論!
出處:藍(lán)色理想
責(zé)任編輯:panliu888
◎進(jìn)入論壇網(wǎng)頁制作、網(wǎng)站綜合版塊參加討論
|