前言

從層次上來(lái)看,對(duì)象的復(fù)制可以簡(jiǎn)單地分為淺復(fù)制和深復(fù)制,顧名思義,淺復(fù)制是指只復(fù)制一層對(duì)象的屬性,不會(huì)復(fù)制對(duì)象中的對(duì)象的屬性,對(duì)象的深復(fù)制會(huì)復(fù)制對(duì)象中層層嵌套的對(duì)象的屬性。
在復(fù)制對(duì)象時(shí),除了要復(fù)制對(duì)象的屬性外,還要兼顧到是否保留了對(duì)象的constructor屬性,是否對(duì)每一種數(shù)據(jù)類型(JavaScript常見(jiàn)的數(shù)據(jù)類型有String,Number,Boolean,Data,RegExp,Array,Funtion,Object)都實(shí)現(xiàn)正確的復(fù)制。項(xiàng)目中,我們可以根據(jù)實(shí)際情況,決定需要實(shí)現(xiàn)什么樣程度的復(fù)制。
本文是我在復(fù)制對(duì)象方面的一些心得總結(jié),由淺復(fù)制到深復(fù)制,由只復(fù)制簡(jiǎn)單屬性到復(fù)制Function,RegExp等復(fù)雜屬性,層層遞進(jìn)。如有陳述不當(dāng)之處,煩請(qǐng)指出,不勝感激。

正文

淺復(fù)制

淺復(fù)制只會(huì)依次復(fù)制對(duì)象的每一個(gè)屬性,不會(huì)對(duì)這些屬性進(jìn)行遞歸復(fù)制。下面是一個(gè)簡(jiǎn)單的淺復(fù)制實(shí)現(xiàn)。

//對(duì)象淺復(fù)制                                                           function shadowCopy(obj){        if(typeof obj !== 'object') return&nbs
        
		

網(wǎng)友評(píng)論