• Typescript中的浅拷贝和深拷贝


    在 TypeScript 中,浅拷贝和深拷贝是两种不同的对象复制方式,它们有不同的使用场景和效果。

    1、浅拷贝 (Shallow Copy):

    浅拷贝是指在复制对象时,只复制对象的第一层属性,而不会递归地复制嵌套对象的内部属性。浅拷贝后的对象和原对象共享同一组内部对象引用。

    • 使用场景:如果你希望两个对象之间共享某些引用类型的属性,可以使用浅拷贝。

    • 性能考虑:当对象的嵌套结构较深,而你只需要复制最外层对象时,可以使用浅拷贝来避免不必要的性能开销。

    • 示例:

    let originalObject = { 
      name: 'John', 
      age: 30, 
      address: { 
        city: 'New York', 
        country: 'USA' 
      } 
    };
    
    let shallowCopy = { ...originalObject };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    2、深拷贝 (Deep Copy):

    深拷贝是指在复制对象时,递归地复制对象的所有嵌套属性,包括内部的引用类型。深拷贝后的对象和原对象不共享任何内部对象引用。

    • 使用场景:当你希望复制对象及其所有嵌套属性,确保原对象和拷贝后的对象完全独立时,可以使用深拷贝。

    • 数据独立性:修改拷贝不影响原对象: 如果你需要修改拷贝后的对象而不影响原对象,深拷贝是必要的。

    • 示例:

    import { cloneDeep } from 'lodash';
    
    let originalObject = { 
      name: 'John', 
      age: 30, 
      address: { 
        city: 'New York', 
        country: 'USA' 
      } 
    };
    
    let deepCopy = cloneDeep(originalObject);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在上述示例中,cloneDeep 函数来自于 lodash 库,它执行深拷贝操作。

    总体来说,选择浅拷贝还是深拷贝取决于你的需求。如果你只关心对象的第一层属性,且希望性能更好,可以使用浅拷贝。如果你需要复制整个对象树,确保对象及其内部属性的独立性,那么应该使用深拷贝。

  • 相关阅读:
    mysql的代理工具实现读写分离实战
    AI 绘画 | Stable Diffusion 涂鸦功能与局部重绘
    【HarmonyOS】鸿蒙入门学习
    AWD平台搭建及遇到的问题分析
    JZ23链表中环的入口结点
    MongoDB数据库一篇全解
    SSM+便民自行车管理系统 毕业设计-附源码191633
    8月2日第壹简报,星期二,农历七月初五
    小程序容器技术加持下,利好混合App开发
    循环神经网络的网络结构,循环神经网络应用举例
  • 原文地址:https://blog.csdn.net/weixin_43160662/article/details/134342252