首页/深拷贝的实现/
深拷贝的实现
2021-05-26 23:35:24 前端 3427

深拷贝的实现


function deepClone(obj = {}) {
  if (typeof obj != 'object' || obj == null) {
    // obj为null 或者不是对象,直接返回
    return obj
  }

  let result
  // 判断obj是否是数组还是对象
  if (obj intanceof Array) {
    result = []
  } else {
    result = {}
  }

  for (let key in obj) {
    /** 
    * 保证obj自身的属性,我们深拷贝拷贝的是数据,不是函数和方法,所以用
    * hasOwnProperty()这个来检测
    */
    if (obj.hasOwnProperty(key)) {
      result[key] = deepClone(obj[key])
    }
  }

  return result
}

以上是深拷贝的完整代码

一个不断学习的前端小菜鸟
永远不要放弃你那颗追梦之心 up up~