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

前端八股 5

深拷贝和浅拷贝

基本类型存在栈内存中,保存变量的值
引用类型存在堆中,变量名存储指向该堆的一个地址(引用)

浅拷贝

创建新数据,数据和原始数据属性值一样,基本类型拷贝值,引用类型拷贝地址

实现浅拷贝方法:

1 Oject.assign静态方法

<script>const obj ={name:`wrak`,live:{moon:`yesterday`,son:`morning`}}const newobj = Object.assign(obj)for(k in newobj){console.log(`属性${k} 属性值:${newobj[k]}`)}</script>

输出结果:
在这里插入图片描述

2 Array类的原型方法Slice()切片

在这里插入图片描述
在这里插入图片描述

3 Array类的原型方法concat() 方法

在这里插入图片描述

…扩展运算符

const fxArr = ["One", "Two", "Three"]
const fxArrs = [...fxArr]
fxArrs[1] = "love";
console.log(fxArr) // ["One", "Two", "Three"]
console.log(fxArrs) // ["One", "love", "Three"]

手动实现浅拷贝

<script>const obj = {uname:'pink',age:18,hobby:[`数摇`,`盯鞋`],child:{sum:1,deep:2}}function shallowCopy(newObject,oldObject){for(k in oldObject){newObject[k] = oldObject[k]}}const newone = {}shallowCopy(newone,obj)for( k in newone){console.log(`属性名:${k} 属性值:${newone[k]}`)}</script>

在这里插入图片描述

深拷贝

深拷贝创建一个新对象,递归拷贝深层次属性,拷贝类型为对象的属性存储的值指向不同地址

实现:

1 lodash库 cloneDeep()函数

2 通过 JSON.stringify()实现

3 递归手动实现 先拷贝数组 再拷贝对象

在这里插入图片描述

http://www.dtcms.com/a/168000.html

相关文章:

  • Gen6D代码框架分析
  • Linux——线程(3)线程同步
  • Elsevier latex报错Paragraph ended before \@citex was complete.<to be read again>
  • Pinia: vue3状态管理
  • 【Android】四大组件
  • Mem0.ai研究团队开发的全新记忆架构系统“Mem0”正式发布
  • 2025年人工智能火爆技术总结
  • 【Linux网络】I/O多路转接技术 - epoll
  • epoll函数
  • 【Shell 脚本编程】详细指南:第四章 - 循环结构(for、while、until) 深度解析
  • 60常用控件_QSpinBox的使用
  • 排序算法——冒泡排序
  • C语言学习之动态内存的管理
  • 交我算使用保姆教程:在计算中心利用singularity容器训练深度学习模型
  • caffe适配cudnn9.6.0(ai修改代码踩坑)
  • synchronized与Lock深度对比
  • 随机森林实战:从原理到垃圾邮件分类
  • Windows下Python3脚本传到Linux下./example.py执行失败
  • AdaBoost算法详解:原理、实现与应用指南
  • 极简GIT使用
  • 补4月30日
  • 常见电源的解释说明
  • C#泛型集合深度解析(九):掌握System.Collections.Generic的核心精髓
  • RTOS接口-Semaphores
  • ADG网络故障恢复演练
  • 实现了一个基于寄存器操作STM32F103C8t6的工程, 并实现对PA1,PA2接LED正极的点灯操作
  • 如何提升个人的稳定性?
  • 蓝桥杯比赛
  • 基于BERT类的MRPC语义相似度检测(从0到-1系列)
  • 机箱结构的EMC设计