当前位置: 首页 > 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.dtcms.com/a/224037.html

相关文章:

  • C++ list数据删除、list数据访问、list反转链表、list数据排序
  • C++23 已弃用特性
  • C++ 建造者模式:简单易懂的设计模式解析
  • 【Linux 学习计划】-- 进程地址空间
  • kafka学习笔记(三、消费者Consumer使用教程——消费性能多线程提升思考)
  • 使用 HTML + JavaScript 实现一个日历任务管理系统
  • 乐观锁:高效并发无锁方案
  • SpringBoot如何实现一个自定义Starter?
  • 华为云Flexus+DeepSeek征文|华为云 Flexus X 加速 Dify 平台落地:高性能、低成本、强可靠性的云上选择
  • 第304个Vulnhub靶场演练攻略:digital world.local:FALL
  • springboot集成websocket给前端推送消息
  • 生活小记啊
  • AWTK 嵌入式Linux平台实现多点触控缩放旋转以及触点丢点问题解决
  • 计算机视觉---GT(ground truth)
  • 每日八股文5.31
  • 【2025年软考中级】第二章2.2 程序设计语言的基本成分
  • VIP》》IP地址漂移
  • 5G 网络中的双向认证机制解析
  • MIT 6.S081 2020 Lab6 Copy-on-Write Fork for xv6 个人全流程
  • 神奇的平方和运算
  • MySQL存储架构深度解析:从引擎选型到云原生实践(2025最新版)
  • 005 flutter基础,初始文件讲解(4)
  • threejs渲染器和前端UI界面
  • JVM类加载高阶实战:从双亲委派到弹性架构的设计进化
  • 【机器学习基础】机器学习入门核心算法:XGBoost 和 LightGBM
  • etcd详解
  • 11.21 LangGraph多轮对话系统实战:三步构建高效信息整理引擎,效率提升300%!
  • Linux笔记---线程
  • 设计模式——面向对象设计六大原则
  • git 之 stash