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

对象浅拷贝的5种方式

参考原文:浅拷贝的五种实现方式 - 掘金 (juejin.cn)

哈喽 大家好啊

最近发现自己对对象都不是很熟练,特别是涉及到一些复制,深浅拷贝的东西

1.Object.assign

 首先 我们创建一个空对象obj1  然后创建一个对象obj2 用object.assign(目标对象,源对象)

进行拷贝复制,打印出来obj1 发现完美复制obj2

然后我们修改obj2.info.age = 30 

 

 然后同时打印obj1  发现age属性值也变成了30

注意: Object.assgin为浅拷贝

  1. 它不会拷贝对象的继承属性
  2. 它不会拷贝对象的不可枚举属性
  3. 可以拷贝Symbol类型的属性 

2.扩展运算符也可以完成浅拷贝

const obj1 = {... obj2}

3.原生实现浅拷贝

const clone = (target) => {// 如果是引用类型if (typeof target === "object" && target !== null) {// 判断是数据还是对象,为其初始化一个数据const cloneTarget = Array.isArray(target) ? [] : {};// for in 可以遍历数组 对象for (let prop in target) {if (target.hasOwnProperty(prop)) {cloneTarget[prop] = target[prop];}}return cloneTarget;} else {// 基础类型 直接返回return target;}
};

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

相关文章:

  • Java每日一练(20230504)
  • 【深度学习】计算机视觉(13)——模型评价及结果记录
  • 项目经理在项目中是什么角色?
  • 【技术分享】防止根据IP查域名,防止源站IP泄露
  • Baumer工业相机堡盟相机如何使用偏振功能(偏振相机优点和行业应用)(C#)
  • 无损以太网与网络拥塞管理(PFC、ECN)
  • 爬虫大全:从零开始学习爬虫的基础知识
  • 【Python】【进阶篇】21、Django Admin数据表可视化
  • 【MySQL约束】数据管理实用指南
  • 2023年第二十届五一数学建模竞赛C题:“双碳”目标下低碳建筑研究-思路详解与代码答案
  • Vue父组件生命周期和子组件生命周期触发顺序
  • DevOps工程师 - 面试手册
  • Netty内存管理--内存池空间规格化SizeClasses
  • 数据结构刷题(三十):96不同的二叉搜索树、01背包问题理论、416分割等和子集
  • bash的进程与欢迎讯息自定义
  • 本周大新闻|苹果首款MR没有主打卖点;Meta认为AI是AR OS的基础
  • Java中工具类Arrays、Collections、Objects
  • Docker安装Nginx/Python/Golang/Vscode【亲测可用】
  • 蓝桥杯2022年第十三届决赛真题-最大数字
  • smbms项目搭建
  • 进程/线程 状态模型详解
  • 数据结构与算法之队列: Leetcode 621. 任务调度器 (Typescript版)
  • 【报错】arXiv上传文章出现XXX.sty not found
  • 项目合同管理
  • 聊聊ClickHouse向量化执行引擎-过滤操作
  • 数据可视化第二版-拓展-网约车分析案例
  • pytest - Getting Start
  • ( 字符串) 205. 同构字符串 ——【Leetcode每日一题】
  • python+django+vue消防知识宣传网站
  • 彻底告别手动配置任务,魔改xxl-job!