const oldObj = { name: 'tao', age: 20, color: ['orange', 'green', 'blue'], friend: { name: 'gua' }, fn: function(){ console.log(1) }}function deepClone(obj) { // 判断不是数组或对象 if(typeof obj !== 'object' || obj === null) { return obj } let res if(obj instanceof Array) { res = [] } else { res = {} } for(let k in obj) { // 过滤掉 obj 原型上的属性 if(obj.hasOwnProperty(k)) { res[k] = deepClone(obj[k]) } } return res}const newObj = deepClone(oldObj)newObj.friend.name = 'taotao'console.log(oldObj, newObj)newObj.fn()