完整可运行代码constoldObj={name:'tao',age:20,color:['orange','green','blue'],friend:{name:'gua'},fn:function(){console.log(1)}}functiondeepClone(obj){//判断是不是数组或对象if(typeofobj!=='object'||obj===null){returnobj}letresif(objinstanceofArray){res=[]}else{res={}}for(letkinobj){//过滤掉obj原型上的属性if(obj.hasOwnProperty(k)){res[k]=deepClone(obj[k])}}returnres}constnewObj=deepClone(oldObj)newObj.friend.name='taotao'console.log(oldObj,newObj)newObj.fn()
