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

    1、基本数据类型的拷贝就是值得拷贝

    2、引用数据类型的拷贝分为浅拷贝跟深拷贝

    浅拷贝:目标对象跟源对象共用一个实体,只是变量名不同

    深拷贝:目标对象跟源对象都是独立的个体

    3、浅拷贝的方法:Object.assign()

    4、深拷贝的方法:

      4-1:将对象转换成字符串(JSON.stringfy)->再将字符串转换成对象(JSON.parse)

        注意:无法拷贝原始对象的函数,因为函数无法转换成字符串

      4-2:递归循环

    function deepCopy(origin,target){
      var target = null;
      if(typeof origin === 'object' && origin !== null){
        target = origin instanceof Array ? [] : {}
        for(var key in origin){
          target[key] = deepCopy(origin[key],target[key]);
        }
      }else{
        target = origin;
      }
      return target
    }
    
    //例子
    var obj = {
      "request_id": "9cf24cde471257bdff47-0000", 
      "code": 0, 
      "data": [
          {
              "id": "1", 
              "parent_id": "0", 
              "name": "佛山分公司", 
              "children": [
                  {
                      "id": "2", 
                      "parent_id": "1", 
                      "name": "总经办", 
                      "children": [ ]
                  }, 
                  {
                      "id": "5", 
                      "parent_id": "1", 
                      "name": "综合管理部", 
                      "children": [
                          {
                              "id": "8", 
                              "parent_id": "5", 
                              "name": "行政部", 
                              "children": [ ]
                          }, 
                          {
                              "id": "9", 
                              "parent_id": "5", 
                              "name": "人事部", 
                              "children": [ ]
                          }
                      ]
                  }
              ]
          }
      ], 
    }
    var target = null;
    target = deepCopy(obj,target)
    console.log('111',target);
    

      

  • 相关阅读:
    jQuery属性遍历、HTML操作
    jQuery效果函数
    【Solr初探】Solr安装,启动,查询,索引
    【mac osx安装opencv,python总结】
    反射给对象赋值——类型转换
    js 模拟a标签打开新网页
    MVC post 方法导出word文档
    Jquery ajax json 值回传不了
    商城
    批处理的赋值 调用 参数
  • 原文地址:https://www.cnblogs.com/ilovexiaoming/p/14830038.html
Copyright © 2011-2022 走看看