美文网首页
【JavaScript】深拷贝

【JavaScript】深拷贝

作者: level | 来源:发表于2021-07-27 13:56 被阅读0次

深浅拷贝复杂数据类型(引用数据类型),简单数据类型(基本数据类型)没有深浅的说法

1、Object.assign()

如果对象的属性值为简单数据类型(string,number),为深拷贝;如果属性值为复杂数据类型就是浅拷贝的,因为只拷贝了复杂数据类型的引用地址。

2、JSON.stringify 和 JSON.parse

function deepClone(obj) {
  let obj1 = JSON.stringify(obj);
  let oClone = JSON.parse(obj1);

  return oClone;
}

3、jQuery extend方法

let obj = {
   a: {
     b: {
       c: {}
     }
   }
};
let obj1 = $.extend(true, {}, obj);

4、lodash.cloneDeep()

let lodash = require('lodash');
let obj1 = {
    a: 1,
    b: { f: { g: 1 } },
    c: [1, 2, 3]
};
let obj2 = lodash.cloneDeep(obj1);

5、递归的实现深拷贝

function deepClone(obj) {
  let target;
  if (typeof source === 'object') {
    target = Array.isArray(obj) ? [] : {};
    for (let key in obj) {
      if (obj.hasOwnProperty(key)) {
        if (typeof obj[key] !== 'object') {
          target[key] = obj[key];
        } else {
          target[key] = deepClone(obj[key]);
        }
      }
    }
  } else {
    target = obj;
  }
  return target;
}

相关文章

  • 浅拷贝和深拷贝

    本文参考:JavaScript中的浅拷贝和深拷贝js 深拷贝 vs 浅拷贝深入剖析 JavaScript 的深复制...

  • 深入理解JavaScript中的堆与栈 、浅拷贝与深拷贝

    JavaScript中的浅拷贝与深拷贝 学了这么长时间的JavaScript想必大家对浅拷贝和深拷贝还不太熟悉吧,...

  • 理解JavaScript中浅拷贝和深拷贝的区别

    要理解 JavaScript中浅拷贝和深拷贝的区别,首先要明白JavaScript的数据类型 JavaScript...

  • js浅拷贝和深拷贝

    javaScript的变量类型 javaScript的变量类型基本类型:引用类型: 浅拷贝和深拷贝的区分 浅拷贝浅...

  • JavaScript深拷贝 浅拷贝

    JavaScript深拷贝 浅拷贝 JavaScript 数据类型分为两种: 基础类型:像Number、Strin...

  • javascript深拷贝

  • JavaScript 深拷贝

    Method1 JSON 使用 JSON 方法,先将 对象 转换成字符串,再将字符串转换成 JSON形式对象 Me...

  • JavaScript深拷贝

    先说下什么是浅拷贝和深拷贝的区别浅拷贝: 就是把一个对象内的属性赋值到另一个对象内, 但是如果属性是对象的话就不可...

  • Javascript深拷贝

    什么是深拷贝 创建一个新的对象或数组时,将原对象/数组的“值”拷贝,而不是“引用”。 深拷贝 数组拷贝不存在多层嵌...

  • JavaScript深拷贝

    写在前面 如果本文对您有所帮助,就请点个关注吧! 手写JavaScript深拷贝 源代码 测试 测试结果

网友评论

      本文标题:【JavaScript】深拷贝

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