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

简介: # 7、浅拷贝和深拷贝## 浅拷贝(shallow copy)- 通常对对象的拷贝都是浅拷贝- 浅拷贝顾名思义,只对对象的浅层进行复制(只复制一层)- 如果对象中存储的数据是原始值,那么拷贝的深浅是不重要- 浅拷贝只会对对象本身进行复制,不会复制对象中的属性(或元素)## 深拷贝(deep copy)- 深拷贝指不仅复制对象本身,还复制对象中的属性和元素- 因为性能问题,通常情况不太使用深拷贝```html <script> //创建一个数组 const arr = [{name:'孙悟空'},{name:'猪八戒'}]

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>
相关文章
|
1月前
|
JavaScript 前端开发
JavaScript Date(日期) 对象
JavaScript Date(日期) 对象
35 2
|
22小时前
|
JavaScript 前端开发 图形学
JavaScript 中 Math 对象常用方法
【10月更文挑战第29天】JavaScript中的Math对象提供了丰富多样的数学方法,涵盖了基本数学运算、幂运算、开方、随机数生成、极值获取以及三角函数等多个方面,为各种数学相关的计算和处理提供了强大的支持,是JavaScript编程中不可或缺的一部分。
|
23天前
|
JavaScript 前端开发
JavaScript中的深拷贝与浅拷贝
JavaScript中的深拷贝与浅拷贝
43 4
|
22小时前
|
Web App开发 JavaScript 前端开发
如何确保 Math 对象的方法在不同的 JavaScript 环境中具有一致的精度?
【10月更文挑战第29天】通过遵循标准和最佳实践、采用固定精度计算、进行全面的测试与验证、避免隐式类型转换以及持续关注和更新等方法,可以在很大程度上确保Math对象的方法在不同的JavaScript环境中具有一致的精度,从而提高代码的可靠性和可移植性。
|
24天前
|
存储 JavaScript 前端开发
JavaScript 对象的概念
JavaScript 对象的概念
34 4
|
23天前
|
缓存 JavaScript 前端开发
JavaScript中数组、对象等循环遍历的常用方法介绍(二)
JavaScript中数组、对象等循环遍历的常用方法介绍(二)
27 1
|
24天前
|
存储 JavaScript 前端开发
js中函数、方法、对象的区别
js中函数、方法、对象的区别
15 2
|
26天前
|
JavaScript 前端开发 Unix
Node.js 全局对象
10月更文挑战第5天
19 2
|
30天前
|
存储 JavaScript 前端开发
js中的对象
js中的对象
18 3
|
1月前
|
JavaScript 前端开发
JavaScript Math(算数) 对象
JavaScript Math(算数) 对象
19 4