第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

遞歸實現(xiàn)拷貝

遞歸實現(xiàn)拷貝

有只小跳蛙 2018-12-26 22:18:41
function cloneObject (src) {var newObj = {}if (typeof (src) !== 'object') {  return src;}else{   for (var attr in src) {     newObj[attr] = cloneObject(src[attr]);   }}return newObj;}這里面的newObj[attr]=cloneObject(src[attr]) 是遞歸這我知道 但是這步的原理我沒看明白 是把src[attr]復(fù)制給newObj 這個數(shù)組嗎 不是很能理解復(fù)制的原理 求解
查看完整描述

1 回答

?
慕容3067478

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)遞歸。


查看完整回答
反對 回復(fù) 2019-01-25
  • 1 回答
  • 0 關(guān)注
  • 537 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號