美文网首页
深拷贝 浅拷贝

深拷贝 浅拷贝

作者: RickyWu585 | 来源:发表于2021-06-09 17:37 被阅读0次

    https://zhuanlan.zhihu.com/p/330218772
    js原生api都是浅拷贝

    • 浅拷贝:只拷贝一层,如果第一层里的变量对应的value是复杂类型,那么这个value是地址,则拷贝出来的也只是个地址。拷贝一个指针,指针指向的是原对象的地址,修改会影响原对象
    • 深拷贝:不管有多少层,全部拷贝。在堆空间内重新开辟一块内存存储新对象,不会影响到原对象
    function deepClone(obj = {}){
      if(typeof obj !== 'object' || obj === null){
        return obj
      }
      let result
      if(obj instanceof Array){
        result = []
      }else{
        result = {}
      }
      for(let key in obj){
        result[key] = deepClone(obj[key])  //递归拷贝深层对象
      }
      return result
    }
    

    相关文章

      网友评论

          本文标题:深拷贝 浅拷贝

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