当前位置: 首页 > news >正文

深拷贝和浅拷贝

‌浅拷贝是一种仅复制对象最外层属性的拷贝方式,对于基本类型直接复制值,对于引用类型则复制内存地址,导致新旧对象共享同一引用数据。

实例:

实现方法: 使用赋值运算符(=)或者Object.assign()函数进行拷贝

// 浅拷贝
const a = [1, 2, 3, 4]
const b = a
b[0] = 5
console.log(a) //[5,2,3,4]
console.log(b)//[5,2,3,4]

深拷贝递归复制所有嵌套层级的引用类型数据,生成完全独立的对象树

实例:

实现方法: 递归拷贝 JSON.parse(JSON.stringify(obj)) …扩展运算符

// 深拷贝
const c: any = [1, 2, 3, 4]
const d: any = [...c] //这只适用于一层深拷贝
d[0] = 6
console.log(c) //[1,2,3,4]
console.log(d) //[6,2,3,4]

如果拷贝的有对象用...扩展符就会失效

// 深拷贝
const c: any = [1, 2, 3, 4, { a: 1 }]
const d: any = [...c] //这只适用于一层深拷贝
d[4].a = 6
console.log(c) //[1,2,3,4,{a:6}]
console.log(d) //[1,2,3,4,{a:6}]const f: any = JSON.parse(JSON.stringify(c));
f[4].a = 7;
console.log(c) //[1,2,3,4,{a:6}]
console.log(f); //[1,2,3,4,{a:7}]

http://www.xdnf.cn/news/742537.html

相关文章:

  • leetcode77.组合:回溯算法中for循环与状态回退的逻辑艺术
  • tmux基本原理
  • OpenLayers 图形交互编辑
  • Redis最佳实践——安全与稳定性保障之访问控制详解
  • VMware-workstation安装教程--超详细(附带安装包)附带安装CentOS系统教程
  • 【Docker项目实战篇】Docker部署PDF查看器PdfDing
  • Maestro CLI云端测试以及github cl,bitrise原生cl的测试流程
  • Azure DevOps 管道部署系列之二IIS
  • 腾讯面试手撕题:返回行递增有序矩阵第k小的元素
  • 【教学类-36-10】20250531蝴蝶图案描边,最适合大小(一页1图1图、2图图案不同、2图图案相同对称)
  • C++ 重载(Overload)、重写(Override)、隐藏(Hiding) 的区别
  • LiquiGen流体导入UE
  • STM32 HAL库函数学习 CRC篇
  • Linux系统编程之共享内存
  • 在QT中,利用charts库绘制FFT图形
  • MAC软件游戏打开提示已损坏
  • MATLAB实战:机器学习分类回归示例
  • 【MFC】如何设置让exe的控制台不会跟着exe退出而退出
  • C++中指针常量和常量指针的区别
  • 【设计模式-4.6】行为型——状态模式
  • [蓝桥杯]拉马车
  • L56.【LeetCode题解】 电话号码的字母组合
  • 触发器与存储过程详解
  • Mybatis-Plus简单介绍
  • 鸿蒙HarmonyOS (React Native)的实战教程
  • Java后端技术栈问题排查实战:Spring Boot启动慢、Redis缓存击穿与Kafka消费堆积
  • 【Java学习笔记】内部类(重点)
  • 数据结构:时间复杂度(Time Complexity)和空间复杂度(Space Complexity)
  • Typescript学习教程,从入门到精通,TypeScript 配置管理与编译器详解(19)
  • Rust 配置解析`serde` + `toml`