针对特殊数据类型JSON.parse()无法完整实现深拷贝的情况下的解决方法

// 判断数据类型
function typeOf(obj) {
const toString = Object.prototype.toString
const map = {
'[object Boolean]': 'boolean',
'[object Number]': 'number',
'[object String]': 'string',
'[object Function]': 'function',
'[object Array]': 'array',
'[object Date]': 'date',
'[object RegExp]': 'regExp',
'[object Undefined]': 'undefined',
'[object Null]': 'null',
'[object Object]': 'object'
}
return map[toString.call(obj)]
}
// 导出
export function deepCopy(data) {
const t = typeOf(data)
let o

if (t === 'array') {
o = []
} else if (t === 'object') {
o = {}
} else {
return data
}

if (t === 'array') {
for (let i = 0; i < data.length; i++) {
o.push(deepCopy(data[i]))
}
} else if (t === 'object') {
for (const i in data) {
o[i] = deepCopy(data[i])
}
}
return o
}

posted @ 2022-10-25 09:45  举个栗子走天下  阅读(135)  评论(0编辑  收藏  举报