/**
|
* 深度克隆
|
* @param origin 源对象
|
* @param target 产出对象 可空
|
* @return {*|{}}
|
*/
|
export function deepClone(origin, target) {
|
target = target || {}
|
const toString = Object.prototype.toString
|
for (const prop in origin) {
|
if (origin.hasOwnProperty(prop)) {
|
const value = origin[prop]
|
if (typeof value === 'object') {
|
const type = toString.call(value)
|
switch (type) {
|
case '[object Object]':
|
target[prop] = {}
|
deepClone(value, target[prop])
|
break
|
case '[object Array]':
|
target[prop] = []
|
deepClone(value, target[prop])
|
break
|
case '[object Null]':
|
target[prop] = null
|
break
|
}
|
} else {
|
target[prop] = value
|
}
|
}
|
}
|
return target
|
}
|