/** * 深度克隆 * @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 }