gaosp
2024-03-09 15e78fe809e54fde4a8cd31d261f336e400d2440
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/**
 * 深度克隆
 * @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
}