记录js中的递归实现深拷贝的方法
前言
记录一下js递归实现深拷贝的方法
提示:以下是本篇文章正文内容,下面案例仅供参考
一、类型判断函数
用于判断数据类型时基本数据类还是引用数据类型,如果是引用数据类型还需要判断是对象还是数组
//箭头函数写法
let checkType = (data) => Object.prototype.toString.call(data).slice(8, -1)
//函数表达式
let checkType = function(data){
return Object.prototype.toString.call(data).slice(8, -1)
}
二、开始深拷贝
代码如下(示例):
deepClone = (target) => {
let targetType = checkType(target)
let result
if (targetType === 'Object') {
result = {}
} else if (targetType === 'Array') {
result = []
} else {
return target
}
for (let key in target) {
let value = target[key]
let valueType = checkType(value)
if (valueType === 'Object' || valueType === 'Array') {
result[key] = deepClone(value)
} else {
result[key] = value
}
}
return result
}