SOURCE


// function deepClone(parent,child){
//     child = child ? child :{}

//     for(let key in parent){
//         //判断是不是自己的属性
//         if(Object.hasOwnProperty.call(parent,key)){
//             //判断是不是对象
//             if(typeof parent[key] == 'object'){
//                 //判断是数组还是对象
//                 child[key] = Object.prototype.toString.call(parent[key]) === '[object object]'? {} :[]
//                 deepClone(parent[key],child[key])
//             }
//         }
      
//       child[key] = parent[key]
        
//     }
//     return child
// }

// let obj = {
//   age: 5,
//   hobby: [1, 2, 3],
//   getAge() {
//     console.log(this.age)
//   },
//   home: ['背景', '上哈'],
//   name: undefined
// }

// const result = deepClone(obj)


// console.log(result,'result')


function deepClone(obj){
    let result
    if(typeof obj == 'object'){
        //判断是数组还是对象
       result = obj.constructor == Array ? [] : {};
       for(let key in obj){
           result[key] = typeof obj[key] == 'object' ? deepClone(obj[key]):obj[key]
       }
    }else{
        result = obj
    }
    return result;
}

let obj = {
  age: 5,
  hobby: [1, 2, 3],
  getAge() {
    console.log(this.age)
  },
  home: ['背景', '上哈'],
  name: undefined
}

const result = deepClone(obj)

console.log(result,'result')
console 命令行工具 X clear

                    
>
console