当前位置: 首页 > 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 递归手动实现 先拷贝数组 再拷贝对象

在这里插入图片描述

相关文章:

  • 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使用
  • 著名医学翻译家王贤才逝世,享年91岁
  • 阿根廷发生5.6级地震,震源深度30公里
  • 426.8万人次!长三角铁路创单日客发量历史新高
  • 国台办:民进党当局所谓“对等尊严”,就是企图改变两岸同属一中
  • 五大光伏龙头一季度亏损超80亿元,行业冬天难言结束
  • 国务院食安办:加强五一假期食品生产、销售、餐饮服务环节监管