1 回答

TA貢獻(xiàn)1773條經(jīng)驗 獲得超3個贊
newObj
怎么是數(shù)組呢,這不是一個對象么?newObj[attr]
是指newObj
上的一個屬性,[]
不是數(shù)組啊。
首先,cloneObject
這個函數(shù)的參數(shù)src
是應(yīng)該是一個對象對吧,不是對象就直接返回了。假如是對象的話,我們要做的,就是把傳入的對象深拷貝一份,將深拷貝的對象return出來,這是這個函數(shù)的作用。這個理解對吧。
然后就牽扯到遞歸遍歷了,假如src
上的一個屬性也是對象,那么這個對象就也需要遍歷,也就是再調(diào)用cloneObject
這個函數(shù)。
前邊說了,這個函數(shù)就是傳進(jìn)去一個對象,再把深拷貝的對象return出來。既然src
上的這個屬性是對象,那么就把這個屬性傳進(jìn)去,將返回的對象賦值給外邊newObj
對象的attr
屬性,attr
是形參,根據(jù)屬性名不同會變。
這就是再次調(diào)用cloneObject
的原因了。
假如src
上的屬性是對象,這個對象的一個屬性又是對象,那就在第二次調(diào)用的cloneObject
里再調(diào)用第三次cloneObject
,將return出的對象賦值給第二次cloneObject
里的newObj
,第二次的最終還會賦值給第一次cloneObject
里的newObj
,實現(xiàn)遞歸。
添加回答
舉報