JavaScript学习笔记—复制
9. 复制
(1)浅拷贝(shallow copy)
- 通常对对象的拷贝都是浅拷贝
- 只对对象的浅层进行复制(只复制一层)
- 如果对象中存储的数据是原始值,那么拷贝的深浅是不重要
- 浅拷贝只会对对象本身进行复制,不会复制对象中的属性(或元素)
const arr = ["孙悟空", "猪八戒"]; const arr2 = arr.slice(); // 浅拷贝 /* 用展开运算符进行浅拷贝 可以将一个数组中的元素展开到另一个数组中或者作为函数的参数传递 */ //const arr3 = [arr[0], arr[1]]; const arr3 = [...arr]; //const arr3 = ["唐僧", ...arr, "白骨精"]; // 展开运算符小例子 function sum(a, b, c){ return a + b +c; } const arr4 = [10, 20, 30]; let result = sum(...arr4); // 60 等价于 sum(arr4[0], arr4[1], arr4[2]) /* 对象的复制 Object.assign(目标对象, 被复制的对象) 将被复制对象中的属性复制到目标对象里,并将目标对象返回 */ const obj = {name: "孙悟空", age: 18}; const obj2 = {}; Object.assign(obj2, obj); const obj3 = {...obj}; // 将obj中的属性在新对象中展开
(2)深拷贝(deep copy)
- 不仅仅复制对象本身,还复制对象中的属性和元素
- 因性能问题,通常不太使用深拷贝
const arr = [{name: "孙悟空"}, {name: "猪八戒"}]; const arr2 = structuredClone(arr); // 深拷贝
分类:
JavaScript
标签:
JavaScript学习笔记
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!