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

深浅拷贝?

一、定义:

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

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

二、浅拷贝实现

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);

相关文章:

  • day 37
  • SWOT 模型:基础框架的应用价值与改进路径
  • day 22 练习——泰坦尼克号幸存者预测
  • Spring boot基础
  • JAVA基础编程练习题--50道
  • 东北某汽车集团云建设:如何用监控易护航云平台系统?
  • C语言初阶--结构体
  • win11+vs2022 安装opencv 4.11.0图解教程
  • ULVAC VWR-400M/ERH 真空蒸发器 Compact Vacuum Evaporator DEPOX (VWR-400M/ERH)
  • 推理模型 vs 非推理模型:核心区别及优劣势解析
  • sd webui 安装sd-webui-TemporalKit 加载报错解决办法
  • 联邦学习与数据隐私保护之间的联系
  • 每日算法-250526
  • 对话魔数智擎CEO柴磊:昇腾AI赋能,大小模型融合开启金融风控新范式
  • python25-递归算法
  • Linux防火墙iptables学习指南!
  • n8n中文版安装指南,使用Docker部署N8N中文版
  • 唯一原生适配鸿蒙电脑的远程控制应用,向日葵正式上线
  • 并发编程艺术--AQS底层源码解析(三)
  • 使用NSIS 和 VNISEdit 打包 electron 程序为 exe 向导式安装包
  • 地方战友网站建设/小程序开发多少钱
  • 网站网络排名优化方法/b站推广网站mmmnba
  • 温州给企业做网站/关键词排名优化官网
  • 嘉鱼网站建设公司/html网页制作用什么软件
  • wordpress 100w 数据/搜索引擎优化心得体会
  • 可以先做网站后备案么/开发一个app价目表