• js实现深度拷贝


    js实现拷贝,使用普通赋值对象,在操作其中一个对象值的时候,另一个也会更改,不符合需求

    因此引入深度拷贝,以下为实现深度拷贝的几种法:

    Object.assign

    // 合并多个对象
    var target = { a: 1, b: 1 };
    var source1 = { b: 2, c: 2 };
    var source2 = { c: 3 };
    Object.assign(target, source1, source2);

    注意: 这个是伪深度拷贝,只能拷贝第一层

    递归拷贝

    function deepClone(source){
      const targetObj = source.constructor === Array ? [] : {}; // 判断复制的目标是数组还是对象
      for(let keys in source){ // 遍历目标
        if(source.hasOwnProperty(keys)){
          if(source[keys] && typeof source[keys] === 'object'){ // 如果值是对象,就递归一下
            targetObj[keys] = source[keys].constructor === Array ? [] : {};
            targetObj[keys] = deepClone(source[keys]);
          }else{ // 如果不是,就直接赋值
            targetObj[keys] = source[keys];
          }
        }
      }
      return targetObj;
    } 

    ... 拼接对象

    let obj = {
        name: 'admin'
    }
    
    let obj2 = {
        age: 14,
        ...obj
    }
    
    console.log(obj2)     // { age: 14, name: 'admin' }

  • 相关阅读:
    C#对象初始化器
    C#构造方法
    C#方法重载
    C#方法
    C#类 对象 字段和属性
    C#数组
    C#字符串
    C#原码反码补码
    字段、方法、属性
    单例模式、异常
  • 原文地址:https://www.cnblogs.com/cap-rq/p/11753927.html
Copyright © 2020-2023  润新知