当前位置: 首页 > 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}]

相关文章:

  • 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 个人全流程
  • 神奇的平方和运算
  • 问答社交网站开发/如何在百度上打广告
  • 配送系统网站怎么做/深圳做网站的公司有哪些
  • 中国贸易服务网/seo网络优化公司
  • 弹幕网站如何做/东莞网站推广营销
  • 什么程序做的网站没有index页面/站长网站查询
  • 网页设计个人网站怎么做/怎样做网络销售平台