function deepCopy(obj){ let toString = Object.prototype.toString; if(typeof obj !== 'object') return obj; if(obj === null) return null; if(Array.isArray(obj)) return obj.map(deepCopy); let newObj = {}; for(let key in obj){ if(toString.call(obj[key])==='[object Date]'){ newObj[key] = new Date(obj[key]) } else if(toString.call(obj[key])==='[object RegExp]'){ newObj[key] = new RegExp(obj[key]) }else{ newObj[key] = deepCopy(obj[key]); } } return newObj; }