Javascript deepCopy&&deepAssign

150 阅读1分钟

Object.assign的拷贝实际为浅拷贝,当对象为多层对象时,会有拷贝失败的情况,所以根据deepCopy函数的原理写了一个deepAssign函数

const deepAssign = (targetObj, otherObj) => {
  for (const key in otherObj) {
    if (Object.prototype.hasOwnProperty.call(targetObj, key)) {
      if (otherObj[key] !== null) {
        if (typeof otherObj[key] === 'object') {
          targetObj[key] = deepAssign(targetObj[key], otherObj[key])
        } else {
          targetObj[key] = otherObj[key]
        }
      }
    }
  }
  return targetObj
}
const deepCopy = (obj) => {
  const result = Array.isArray(obj) ? [] : {}
  for (const key in obj) {
    if (Object.prototype.hasOwnProperty.call(obj, key)) {
      if (typeof obj[key] === 'object' && obj[key] !== null) {
        result[key] = deepCopy(obj[key]) 
      } else {
        result[key] = obj[key]
      }
    }
  }
  return result
}