zoukankan      html  css  js  c++  java
  • 深入解读深拷贝与浅拷贝

    1.为什么会有深拷贝与浅拷贝?

      目的:我们要实现一个对象的拷贝,不想改变原来的对象

      这样的话我们会有两种解决方案;一个就是浅拷贝,一个是深拷贝

    1.什么是浅拷贝?

       当一个对象只有单层的情况下,我们就可以使用浅拷贝来实现我们的目的;

       当一个对象是多层情况下,我们使用浅拷贝的话,就不会有以上的效果,所以我们引入深拷贝

    2.什么是深拷贝?

     当一个对象不管是多层还是单层的情况下都可以实现我们想要的目的

    3.如何实现浅拷贝

        var obj = {a:1,b:2,c:3}
        var obj1 = Object.assign({},obj)
        obj1.a = 4
        console.log(obj.a)   //1
        console.log(obj1.a)  //4
    var obj = {a:1,b:2,c:3}
    var obj1 = {...obj}
    obj1.a = 4
    console.log(obj.a)   //1
    console.log(obj1.a)  //4
    var obj = {a:1,b:2,c:3}
     function copy(obj){
      let newObj = {}
      for(var key in obj){
        newObj[key] = obj[key];
      }
      return newObj;
     }
     var obj1 = copy(obj1);
     obj1.a = 4;
     console.log(obj.a);  //1
     console.log(obj1.a); //4
      var obj = {a:1,b:2,c:3};
      var obj1 = $.extends({},obj);
      obj1.a = 4;
      console.log(obj.a)  //1
      console.log(obj1.a)  //4

    4.如何实现深拷贝?

       var obj = {a:{x:1,y:2}}
       var obj1 = $.extend(true,{},obj)   //参数一为true,实现深拷贝
       obj1.a.x = 3
       console.log(obj)   //{a:{x:1,y:2}}
       console.log(obj1)  //{a:{x:3,y:2}}
    

      

     var obj = {a:{x:1,y:2}}   //对象中不可以出现函数
     var obj1 = JSON.parse(JSON.stringify(obj))
     obj.a.x = 3
     console.log(obj1)  //{a:{x:3,y:2}}
     console.log(obj)   //{a:{x:1,y:2}}
    

      

      

  • 相关阅读:
    Joomla 3.9.13 二次注入分析(CVE-2019-19846)
    Wordpress未授权查看私密内容漏洞 分析(CVE-2019-17671)
    Thinkphp 5.1.24 parseKey缺陷导致聚合注入 分析
    Thinkphp 5.1.7 parseData缺陷导致insert/update注入 分析
    Oracle笔记2
    Oracle笔记1
    k8s之helm入门
    k8s之自定义指标API部署prometheus
    k8s之资源指标API部署metrics-server
    k8s之调度器、预选策略及优选函数
  • 原文地址:https://www.cnblogs.com/guan-shan/p/10125185.html
Copyright © 2011-2022 走看看