ES6 深拷贝_Javascript 经典面试之深拷贝VS浅拷贝

时间: 2023-07-08 10:23:27 浏览: 31
深拷贝和浅拷贝是在 JavaScript 中常用的两种数据复制方式。 浅拷贝只会复制对象的引用,而不是对象本身,因此当原对象改变时,新对象也会发生改变。深拷贝则会复制整个对象,包括对象的所有属性和嵌套对象,因此新对象和原对象是完全独立的,互不影响。 在 ES6 中,可以使用 Object.assign() 方法来进行浅拷贝。例如: ``` let obj1 = { name: 'Alice', age: 18 }; let obj2 = Object.assign({}, obj1); obj1.age = 20; console.log(obj2.age); // 输出 18 ``` 在这个例子中,我们使用 Object.assign() 对 obj1 进行浅拷贝,将其复制到 obj2 中。当我们修改 obj1 中的 age 属性时,obj2 并不会受到影响。 而对于深拷贝,可以使用 JSON.parse(JSON.stringify()) 来实现。例如: ``` let obj1 = { name: 'Alice', age: 18, address: { city: 'Shanghai', country: 'China' } }; let obj2 = JSON.parse(JSON.stringify(obj1)); obj1.address.city = 'Beijing'; console.log(obj2.address.city); // 输出 Shanghai ``` 在这个例子中,我们使用 JSON.stringify() 将 obj1 转换为字符串,再使用 JSON.parse() 将其转换回对象。这样就可以实现深拷贝了。需要注意的是,使用 JSON.stringify() 和 JSON.parse() 进行深拷贝时,会自动忽略掉值为 undefined、function 和 symbol 的属性。

最新推荐

解决低版本的浏览器不支持es6的import问题

下面小编就为大家分享一篇解决低版本的浏览器不支持es6的import问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

ES6中Array.includes()函数的用法

主要介绍了ES6中Array.includes()函数的用法,需要的朋友可以参考下

Vue如何基于es6导入外部js文件

主要介绍了Vue如何基于es6导入外部js文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

es6数组includes()用法实例分析

主要介绍了es6数组includes()用法,结合实例形式分析了es6数组includes()针对给定值判断的相关操作技巧与使用注意事项,需要的朋友可以参考下

新能源汽车行业专题报告:电动智能化的自主可控与新动能.pdf

新能源汽车行业专题报告:电动智能化的自主可控与新动能.pdf

基于51单片机的usb键盘设计与实现(1).doc

基于51单片机的usb键盘设计与实现(1).doc

"海洋环境知识提取与表示:专用导航应用体系结构建模"

对海洋环境知识提取和表示的贡献引用此版本:迪厄多娜·察查。对海洋环境知识提取和表示的贡献:提出了一个专门用于导航应用的体系结构。建模和模拟。西布列塔尼大学-布雷斯特,2014年。法语。NNT:2014BRES0118。电话:02148222HAL ID:电话:02148222https://theses.hal.science/tel-02148222提交日期:2019年HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire论文/西布列塔尼大学由布列塔尼欧洲大学盖章要获得标题西布列塔尼大学博士(博士)专业:计算机科学海洋科学博士学院对海洋环境知识的提取和表示的贡献体系结构的建议专用于应用程序导航。提交人迪厄多内·察察在联合研究单位编制(EA编号3634)海军学院

react中antd组件库里有个 rangepicker 我需要默认显示的当前月1号到最后一号的数据 要求选择不同月的时候 开始时间为一号 结束时间为选定的那个月的最后一号

你可以使用 RangePicker 的 defaultValue 属性来设置默认值。具体来说,你可以使用 moment.js 库来获取当前月份和最后一天的日期,然后将它们设置为 RangePicker 的 defaultValue。当用户选择不同的月份时,你可以在 onChange 回调中获取用户选择的月份,然后使用 moment.js 计算出该月份的第一天和最后一天,更新 RangePicker 的 value 属性。 以下是示例代码: ```jsx import { useState } from 'react'; import { DatePicker } from 'antd';

基于plc的楼宇恒压供水系统学位论文.doc

基于plc的楼宇恒压供水系统学位论文.doc

"用于对齐和识别的3D模型计算机视觉与模式识别"

表示用于对齐和识别的3D模型马蒂厄·奥布里引用此版本:马蒂厄·奥布里表示用于对齐和识别的3D模型计算机视觉与模式识别[cs.CV].巴黎高等师范学校,2015年。英语NNT:2015ENSU0006。电话:01160300v2HAL Id:tel-01160300https://theses.hal.science/tel-01160300v22018年4月11日提交HAL是一个多学科的开放获取档案馆,用于存放和传播科学研究文件,无论它们是否已这些文件可能来自法国或国外的教学和研究机构,或来自公共或私人研究中心。L’archive ouverte pluridisciplinaire博士之路博士之路博士之路在获得等级时,DOCTEURDE L'ÉCOLE NORMALE SUPERIEURE博士学校ED 386:巴黎中心数学科学Discipline ou spécialité:InformatiquePrésentée et soutenue par:马蒂厄·奥布里le8 may 2015滴度表示用于对齐和识别的Unité derechercheThèse dirigée par陪审团成员équipe WILLOW(CNRS/ENS/INRIA UMR 8548)慕尼黑工业大学(TU Munich�