首页 > 编程语言 >【JavaScript】27_浅拷贝和深拷贝 + 对象的复制

【JavaScript】27_浅拷贝和深拷贝 + 对象的复制

时间:2023-02-24 18:32:30浏览次数:44  
标签:arr 27 const 对象 JavaScript 复制 arr3 拷贝

7、浅拷贝和深拷贝

浅拷贝(shallow copy)

  • 通常对对象的拷贝都是浅拷贝
  • 浅拷贝顾名思义,只对对象的浅层进行复制(只复制一层)
  • 如果对象中存储的数据是原始值,那么拷贝的深浅是不重要
  • 浅拷贝只会对对象本身进行复制,不会复制对象中的属性(或元素)

深拷贝(deep copy)

  • 深拷贝指不仅复制对象本身,还复制对象中的属性和元素
  • 因为性能问题,通常情况不太使用深拷贝
<script>
//创建一个数组
const arr = [{name:'孙悟空'},{name:'猪八戒'}]
const arr2= arr.slice()//浅拷贝

const arr3 = structuredClone(arr)//专门用来深拷贝的方法

console.log(arr)
console.log(arr3)
</script>

8、对象的复制

对象的复制

  • Object.assign(目标对象, 被复制的对象)
  • 将被复制对象中的属性复制到目标对象里,并将目标对象返回
  • 也可以使用展开运算符对对象进行复制

... (展开运算符)

  • 可以将一个数组中的元素展开到另一个数组中或者作为函数的参数传递
  • 通过它也可以对数组进行浅复制
<script>
const arr = ['孙悟空','猪八戒','沙和尚']
const arr2 = arr.slice()

console.log(arr===arr2)//false

// const arr3 = [arr[0],arr[1],arr[2]]
const arr3 = [...arr]//效果一致
// const arr3 = ['唐僧',...arr,'白骨精']

console.log(arr)
console.log(arr3)
</script>

标签:arr,27,const,对象,JavaScript,复制,arr3,拷贝
From: https://blog.51cto.com/wujianrenn/6084327

相关文章

  • 【JavaScript】28_数组的常用方法
    9、数组的方法push()向数组的末尾添加一个或多个元素,并返回新的长度pop()删除并返回数组的最后一个元素unshift()向数组的开头添加一个或多个元素,并返回新的长度shift()删......
  • 拷贝构造函数调用时机
    这里讨论两种情况下的拷贝函数调用:作为参数传值过程中的拷贝函数调用,有一个Dog类,d1是Dog类的一个实例现在通过function将d1传入,voidfunction(Dogdog);d1是dog的实参,在......
  • JavaScript 之下划线转换驼峰和驼峰转换下划线
    下划线转换驼峰functiontoHump(lineStr){returnlineStr.replace(/\_(\w)/g,function(all,letter){returnletter.toUpperCase();});}驼峰转换下划线......
  • JavaScript语法快速学习
    资料来源于:B站尚硅谷JavaWeb教程(全新技术栈,全程实战),本人才疏学浅,记录其笔记以供他日回顾视频链接知识点<!--Javascript:客户端的一个脚本语言js是一门弱类型......
  • 最佳的18个JAVASCRIPT前端开发框架和库
    JavaScript可以说是最流行的编程语言之一,也是Web开发人员必须学习的3种语言之一,JavaScript几乎可以做任何事情,更可以在包括物联网在内的多个平台和设备上运行。在Web......
  • 从外网 log4j2 RCE 再到内网组合拳漏洞 CVE-2021-42287、CVE-2021-42278 拿到 DC
    网络拓扑信息搜集渗透测试第一步当然是信息搜集拿到IP192.168.81.151我们先使用nmap对他进行常规TCP端口的扫描nmap-v-Pn-T3-sV-n-sT--open-p22,1222,2222,22345......
  • JavaScript加密代码反调试
    JavaScript奇技淫巧:加密JS代码反调试JS代码混淆加密,已被很多人使用,因为它真的很有用、很实用,可以用于保护代码、防护分析、复制、盗用,还可以用于小游戏过审、APP加固等方面......
  • 深拷贝
    functiondeepClone(source){vartargetObj=Array.isArray(source)===Array?[]:{};for(varkeysinsource){i......
  • 【Javascript】el-upload 上传图片转 base64 (使用 FileReader)
    e.target.result结果......
  • Linux 脚本编译安装http-2.4.27版本
           Linux脚本编译安装http-2.4.27版本运行脚本前请将国内的比较快的基础源和epel源配置好,剩下就不用管了,运行脚本,半个小时左右自动编译安装完,并且大部分......