目前我找到的對(duì)遞歸最恰當(dāng)?shù)谋扔?,就是查詞典。
我們使用的詞典,本身就是遞歸,為了解釋一個(gè)詞,需要使用更多的詞。
當(dāng)你查一個(gè)詞,發(fā)現(xiàn)這個(gè)詞的解釋中某個(gè)詞仍然不懂,于是你開始查這第二個(gè)詞,可惜,第二個(gè)詞里仍然有不懂的詞,于是查第三個(gè)詞,這樣查下去,直到有一個(gè)詞的解釋是你完全能看懂的,那么遞歸走到了盡頭,然后你開始后退,逐個(gè)明白之前查過的每一個(gè)詞,最終,你明白了最開始那個(gè)詞的意思。。。
解釋:
遞歸,就是在運(yùn)行的過程中調(diào)用自己
const oldObj = {
name:'測(cè)試',
age:20,
colors:['orange','green','blue'],
friend:{
name:'小夏'
}
}
// 深拷貝函數(shù)
function deepClone(obj){
if(typeof obj !=='object' || obj == null){
return obj;
}
let result;
if(obj instanceof Array){
result=[]
} else {
result ={}
}
for(let key in obj){
if(obj.hasOwnProperty(key)){
result[key] = deepClone(obj[key])
}
}
return result;
}
const newObj2 = deepClone(oldObj)
newObj2.friend.name = '小野'
newObj2.name = 'xiannv'
newObj2.colors[4]='black'
console.log('oldObj',oldObj)
console.log('newObj',newObj2)