/*
* @Author: boyyang
* @Date: 2021-12-09 09:21:18
* @LastEditTime: 2021-12-12 00:31:38
* @LastEditors: boyyang
* @Description: 对象深拷贝
* @FilePath: \mywebsite\src\utils\deepclone.ts
*
*/
// 判断是否为数组
const isArr = (origin: any): boolean => {
let str = '[object Array]'
return Object.prototype.toString.call(origin) == str ? true : false
}
const deepClone = <T>(origin: T, target?: Record<string, any> | T ): T => {
let tar = target || {}
for (const key in origin) {
if (Object.prototype.hasOwnProperty.call(origin, key)) {
if (typeof origin[key] === 'object' && origin[key] !== null) {
tar[key] = isArr(origin[key]) ? [] : {}
deepClone(origin[key], tar[key])
} else {
tar[key] = origin[key]
}
}
}
return tar as T
}