function deepClone(obj = {}) { // obj是null或undefined(留神这里应用的==不是===)或者不是对象和数组,间接返回 if (typeof obj !== 'object' || obj == null) { return obj } // 初始化返回后果 let result if (obj instanceof Array) { result = [] } else { result = {} } for(let key in obj) { // 保障 key 不是原型的属性 if (obj.hasOwnProperty(key)) { // 递归 result[key] = deepClone(obj[key]) } } // 返回后果 return result}// 测试const obj1 = { age: 20, name: '张三', addresss: { city: 'beijing' }, arr: ['a', 'b', 'c']}const obj2 = deepClone(obj1)obj2.name = '李四'obj2.addresss.city = 'hefei'obj1.arr[0] = 100console.log(obj1, obj2)