美文网首页
手写深拷贝

手写深拷贝

作者: bryan_liu | 来源:发表于2022-03-28 16:18 被阅读0次
    function deepClone(obj = {},map = new Map()) {
      if(typeof obj !== 'object') {
        return obj
      }
      if(map.get(obj)) {
        return map.get(obj)
      }
      // 初始化返回结果
      let result = {}
      if(obj instanceof Array || Object.prototype.toString(obj) === "[object Array]") {
        result = []
      }
      // 防止循环引用
      map.set(obj,result)
      for(const key in obj){
        if(obj.hasOwnProperty(key)) {
          // 递归调用
          result[key] = deepClone(obj[key],map)
        }
      }
      // 返回结果
      return result
    }
    

    相关文章

      网友评论

          本文标题:手写深拷贝

          本文链接:https://www.haomeiwen.com/subject/iumpjrtx.html