| // 判断arr是否为一个数组,返回一个bool值 | 
| function isArray (arr) { | 
|     return Object.prototype.toString.call(arr) === '[object Array]'; | 
| } | 
|   | 
| // 深度克隆 | 
| function deepClone (obj) { | 
|     // 对常见的“非”值,直接返回原来值 | 
|     if([null, undefined, NaN, false].includes(obj)) return obj; | 
|     if(typeof obj !== "object" && typeof obj !== 'function') { | 
|         //原始类型直接返回 | 
|         return obj; | 
|     } | 
|     var o = isArray(obj) ? [] : {}; | 
|     for(let i in obj) { | 
|         if(obj.hasOwnProperty(i)){ | 
|             o[i] = typeof obj[i] === "object" ? deepClone(obj[i]) : obj[i]; | 
|         } | 
|     } | 
|     return o; | 
| } | 
|   | 
| export default deepClone; |