1 // 深拷貝 2 function cloneDeep(obj) { 3 // 3.根據obj為對象或者數組,產生一個空的對象或數組,存放數據 4 var newobj = obj instanceof Array ? [] : {}, 5 // 1.for...in進入循環 6 for (var k in obj) { 7 // 2.判斷對象的第一個屬性是否為數組或者對象,如果是,則進入遞歸 8 // if (obj[k] instanceof Array) { 9 // newobj[k] = cloneDeep(obj[k]) 10 // } else if (obj[k] instanceof Object) { 11 // newobj[k] = cloneDeep(obj[k]) 12 // } 13 // 4.上面兩個執行邏輯一樣,進行合並 14 if (typeof obj[k] === 'object') { 15 newobj[k] = cloneDeep(obj[k]) 16 } else { 17 // 5.如果數據為基本類型,則直接賦值 18 newobj[k] = obj[k] 19 } 20 } 21 // 6.把存放了數據的新對象返回出去 22 return newobj 23 }