递归实现深拷贝

167 阅读1分钟

checkType 检查属性类型

deepClone 实现深拷贝

// js 源码数据类型检测
function checkedType(target) {
  let typeObj= Object.prototype.toString.call(target)
  return typeObj.slice(8, -1) // 截取最终类型并返回
}
function deepClone(target) {
  const targetType = checkedType(target)
  let result;
  if (targetType === 'object') {
    result = {}
  } else if (targetType === 'Array') {
    result = []
  } else {
    return target
  }
  for (let i in target) {
    let value = target[i]
    if (checkedType(value) === 'Object' || checkedType(value) === 'Array') {
      result[i] = deepClone(value)
    } else {
      result[i] = value;
    }
  }
  return result
}