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

深浅拷贝?

一、定义:

浅拷贝:只复制对象的第一层属性,若第一层属性是引用类型(如对象、数组),则复制其内存地址,修改拷贝后的嵌套对象会影响原对象。

深拷贝:递归复制对象的所有层级,生成完全独立的副本

二、浅拷贝实现

1.Object.assign()
const obj = { a: 1, b: { c: 2 } }; 
const clone = Object.assign({}, obj); // 浅拷贝 
clone.b.c = 3; // 原对象的 b.c 也会变为 3 
console.log("obj: ", obj) 
console.log("clone: ", clone)

2.展开运算符
const arr = [1, 2, 3]; 
const newArr = [...arr]; // 浅拷贝 
newArr[2] = 4; 
console.log("arr: ", arr) 
console.log("newArr: ", newArr)

const arr = [1, 2, { a: 3 }]; 
const newArr = [...arr]; // 浅拷贝 
newArr[2].a = 4; // 原数组的 { a: 3 } 变为 { a: 4 } 
console.log("arr: ", arr) 
console.log("newArr: ", newArr)

3.数组方法:slice, concat

slice:

const arr = [1, 2, { a: 3 }]; 
const newArr = arr.slice(); // 浅拷贝 
newArr[2].a = 4 
console.log("arr: ", arr) 
console.log("newArr: ", newArr)

concat:

const arr = [1, 2, { a: 3 }]; 
const newArr = arr.concat(); // 浅拷贝 
newArr[2].a = 4 
console.log("arr: ", arr) 
console.log("newArr: ", newArr)

三、深拷贝

1.JSON 方法
const obj = { a: 1, b: { c: 2 } }; 
const clone = JSON.parse(JSON.stringify(obj)); // 深拷贝 
clone.b.c = 4 
console.log("obj", obj) 
console.log("clone", clone)

2.第三方库

// Lodash 
const _ = require('lodash'); 
const clone = _.cloneDeep(obj);

http://www.lryc.cn/news/2386607.html

相关文章:

  • Beckhoff PLC 功能块 FB_CTRL_ACTUAL_VALUE_FILTER (模拟量滤波)
  • Mysql在SQL层面的优化
  • JVM规范之栈帧
  • 【C++指南】string(四):编码
  • 深度学习之序列建模的核心技术:LSTM架构深度解析与优化策略
  • AI量化交易是什么?它是如何重塑金融世界的?
  • 分布式事务处理方案
  • CVE-2024-36467 Zabbix权限提升
  • Dify中的自定义模型插件开发例子:以xinference为例
  • crud方法命名示例
  • 尚硅谷redis7 33-36 redis持久化之RDB优缺点及数据丢失案例
  • No such file or directory: ‘ffprobe‘
  • 计算机网络-WebSocket/DNS/Cookie/Session/Token/Jwt/Nginx
  • 功能“递归模式”在 C# 7.3 中不可用,请使用 8.0 或更高的语言版本的一种兼容处理方案
  • 第4章-操作系统知识
  • 将网页带格式转化为PDF
  • 【ArcGIS】ArcGIS AI 助手----复现
  • 使用 FFmpeg 将视频转换为高质量 GIF(保留原始尺寸和帧率)
  • 《Java vs Go vs C++ vs C:四门编程语言的深度对比》
  • 充电枪IEC62196/EN 62196测试内容
  • 有效的字母异位符--LeetCode
  • SAP ERP 系统拆分的七大挑战
  • AcrelEMS 3.0智慧能源管理平台:构建企业微电网数智化中枢
  • 【HTML-12】HTML表格常用属性详解:从基础到高级应用
  • Word转PDF--自动生成目录
  • MySQL组合索引优化策略
  • Spring MVC 的的核心原理与实践指南
  • 轻量级视觉语言模型 Dolphin:高效精准的文档结构化解析利器
  • 如何安全配置数据库(MySQL/PostgreSQL/MongoDB)
  • 将 Docker 镜像从服务器A迁移到服务器B的方法