位置: IT常识 - 正文

前端面试:浅拷贝和深拷贝的区别?(前端常见面试)

编辑:rootadmin
前端面试:浅拷贝和深拷贝的区别?

推荐整理分享前端面试:浅拷贝和深拷贝的区别?(前端常见面试),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:前端面试题简书,前端面试底层原理,前端底层面试题,前端深度面试题,简单的前端面试题,前端深度面试题,前端底层面试题,简单的前端面试题,内容如对您有帮助,希望把文章链接给更多的朋友!

 前些天发现了一个巨牛的人工智能学习博客,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转

那么大家晚上好,我是今天晚上的主讲老师,我是兔哥。

我们在面试中经常会被问到浅拷贝和深拷贝的区别,正好群里也有在问到这个问题,于是今天就专门写一篇博客来讲解一下哈。

1.浅拷贝

浅拷贝是指,对基本类型的值拷贝,以及对象类型的地址拷贝。

怎么讲,什么是基本类型?

在js中,我们知道的基本类型有字符串,数字,布尔值。

当我们写这样的代码,就是浅拷贝。

var a = 1;var b = a; //浅拷贝b = 2; //改变b的值,并不会影响到a,因为浅拷贝对基本类型而言就是值拷贝console.log(a);

a还是1,和b没有关系。

前端面试:浅拷贝和深拷贝的区别?(前端常见面试)

这个道理,在对象中也一样适用。JavaScript中还有对象类型(也叫引用数据类型),对象类型的浅拷贝则只是拷贝了地址。

var p1 = { name: 'jack'}var p2 = p1;p2.name = 'rose';console.log(p1);

p2保存的是和p1一模一样的内存地址,就好像你去配了一把钥匙给张三,张三拿着钥匙一样可以去你家把冰箱里的酸奶喝了。

2.深拷贝

深拷贝是指,除了拷贝基本类型的值,还完全复刻了对象类型。

一个对象在内存中是固定存在的,我们如果要对其进行深拷贝,唯一的办法就是创建一个新的对象,里面的值完全复刻原来的对象。

还是刚才例子,我们稍加改造

var p1 = { name: 'jack'}var p2 = { name: p1.name};p2.name = 'rose';

这样一来,我们对p2进行改造,就不会影响到p1了。这就是深拷贝。

我们用这种方法实现深拷贝是可以的,但是如果属性太多,就会很繁琐。下面讲讲如何实现深拷贝的通用方法?

3.深拷贝 Object.assign()

Object.assign()是一种可以对非嵌套对象进行深拷贝的方法,如果对象中出现嵌套情况,那么其对被嵌套对象的行为就成了普通的浅拷贝。如果没有嵌套,是可以用这个方法的。

var p1 = { name: 'jack'}var p2 = {}Object.assign(p2,p1);

还有一种类似的方法,就是用JSON进行转换

var p1 = { name: 'jack', age:12}var p2 = JSON.parse(JSON.stringify(p1));p2.name = 'rose';

实际开发中,可能这种方式用的更多一些,比如把一些数据转成json存储到本地缓存,需要用到的时候,我们再反序列化。

4.深拷贝递归function deepCopy(dest,src){ var dest = dest || {}; for(var key in src){ //如果对象的属性又是对象,则递归处理 if(typeof src[key] === "object"){ dest[key]= (src[key].constructor === Array)?[]:{}; deepCopy(dest[key],src[key]); }else{ dest[key]=src[key]; } } return dest;}

测试:

var p1 = { name: 'jack', age:12, toy: { name:'car' }}var p2 = deepCopy({},p1);

可以看到,操作p2并不会影响到p1,这就是递归方式的深拷贝。 

今天的分享就到这里啦,也欢迎大家来我们的学习qun交流哦~~

本文链接地址:https://www.jiuchutong.com/zhishi/300025.html 转载请保留说明!

上一篇:简单易懂 关于nextTick()的理解(关于简单的绘画)

下一篇:HTML+CSS+JS 学习笔记(一)———HTML(上)(html/css/javascript)

  • word两端对齐怎么设置(word两端对齐不对齐怎么办)

    word两端对齐怎么设置(word两端对齐不对齐怎么办)

  • vivoy93s有指纹解锁功能吗(vivoy93指纹设置在哪里)

    vivoy93s有指纹解锁功能吗(vivoy93指纹设置在哪里)

  • b站手机直播弹幕在哪里开(b站手机直播弹幕姬)

    b站手机直播弹幕在哪里开(b站手机直播弹幕姬)

  • 拉黑名单对方显示什么(拉黑名单对方显示拦截记录吗)

    拉黑名单对方显示什么(拉黑名单对方显示拦截记录吗)

  • amd a4-6300相当于i几(amda46300相当于i几代)

    amd a4-6300相当于i几(amda46300相当于i几代)

  • 华为nova7时间设置在哪里(华为nova7时间设置在桌面)

    华为nova7时间设置在哪里(华为nova7时间设置在桌面)

  • 手机停机后一直扣费合理吗(手机停机后一直扣费应该怎么投诉)

    手机停机后一直扣费合理吗(手机停机后一直扣费应该怎么投诉)

  • 三星s10无缘无故黑屏(三星s10无缘无故有提示音)

    三星s10无缘无故黑屏(三星s10无缘无故有提示音)

  • 电脑硬盘突然消失不见(电脑硬盘突然消失了怎么回事)

    电脑硬盘突然消失不见(电脑硬盘突然消失了怎么回事)

  • m2固态温度多少正常(m2固态一般多少度)

    m2固态温度多少正常(m2固态一般多少度)

  • 苹果怎么用搜狗输入法键盘(苹果怎么用搜狗键盘)

    苹果怎么用搜狗输入法键盘(苹果怎么用搜狗键盘)

  • 华为mate30pro怎么设置指纹支付(华为mate30pro怎么分屏)

    华为mate30pro怎么设置指纹支付(华为mate30pro怎么分屏)

  • 蚂蚁森林几点抢新树(蚂蚁森林 几点)

    蚂蚁森林几点抢新树(蚂蚁森林 几点)

  • p0e供电是什么(监控poe供电好还是电源供电好)

    p0e供电是什么(监控poe供电好还是电源供电好)

  • 华为终端和华为的区别(华为终端和华为技术的区别)

    华为终端和华为的区别(华为终端和华为技术的区别)

  • 怎么解决手机产生虚电(怎么解决手机产生的问题)

    怎么解决手机产生虚电(怎么解决手机产生的问题)

  • 域名系统的功能(买域名有什么用处)

    域名系统的功能(买域名有什么用处)

  • 安装多闪怎样验证身份(多闪 自动安装)

    安装多闪怎样验证身份(多闪 自动安装)

  • ps平面设计是什么(ps平面设计是什么意思啊)

    ps平面设计是什么(ps平面设计是什么意思啊)

  • 京东取消订单流程(京东提交订单取消)

    京东取消订单流程(京东提交订单取消)

  • 小米4c悬浮球怎么开启(小米4c悬浮球怎么设置)

    小米4c悬浮球怎么开启(小米4c悬浮球怎么设置)

  • 有电话号码怎么查名字(有电话号码怎么加微信)

    有电话号码怎么查名字(有电话号码怎么加微信)

  • 简述什么是单片机(简述什么是单片机的概念)

    简述什么是单片机(简述什么是单片机的概念)

  • wps ppt如何去掉图片底色(wpsppt如何去掉日期)

    wps ppt如何去掉图片底色(wpsppt如何去掉日期)

  • mate20后盖什么材质(华为mate 20原装后盖)

    mate20后盖什么材质(华为mate 20原装后盖)

  • Vite4 + Vue3 项目打包并发布Nginx服务器 (前端必看)(vue3.0 vite)

    Vite4 + Vue3 项目打包并发布Nginx服务器 (前端必看)(vue3.0 vite)

  • OpenAI GPT-3模型详解(gpt3 模型大小)

    OpenAI GPT-3模型详解(gpt3 模型大小)

  • 金税盘技术维护费
  • 当月出口的货物,可以过几个月申报吗
  • 企业所得税计算表
  • 报销单据粘贴单图片
  • 多交的增值税和附加税退回,如何记账
  • 银行提供资金
  • 审计调整分录汇总的内容
  • 电梯广告租赁属于哪类
  • 上期有留抵进项税额,本期如何转,如何做账
  • 预收款转营业外收入条件
  • 分公司独立核算企业所得税缴纳
  • 小规模纳税人交印花税吗
  • 个人提供技术服务费开票税率
  • 当月采购发票未到如何做账及结转成本?
  • 支票遗失声明书范文
  • 委托销售怎么做分录
  • 跨月作废发票怎么开
  • 个人申请代开普需要资料
  • 税局定额的标准
  • 企业不合规发票责令补开处理
  • 长期零申报的公司容易注销吗
  • 股东以资产入股公司
  • 财产转让所得个人所得税纳税地点
  • 小微企业增值税减免政策
  • 应交税费的明细账怎么手工登记
  • 收到返还代扣代缴手续费如何入账?
  • 跨年的工会经费怎么做分录
  • 短期借款有没有上年结转
  • 固定资产出租需要交什么税
  • mac book air文件夹怎么重命名
  • 宽带测速器在线测速
  • 营运能力指标正常范围
  • 没有进项发票的货物能算成本吗
  • 印花税纳税申报表填写范本
  • w10怎么找蓝牙
  • 电脑中毒如何处理
  • 葛根泡水喝的七大功效
  • win7纯净版系统官网
  • 小企业会计准则调整以前年度费用分录
  • 备用金会涨额度吗
  • php购物车订单处理
  • 数据 挖掘
  • 销售退回的处理方法
  • windows where命令
  • 小型企业利润表
  • 多收钱少开票
  • 限定性和非限定性资产的区别
  • 帝国cms插件编写教程
  • db2replace函数用法
  • MySQL中使用_____语句更新表中的数据
  • python操作yaml文件
  • 一般纳税人之间转让土地使用权交哪些税金
  • 长期股权投资处置损失计入什么科目
  • 修改mysql配置
  • 企业开办期间账务处理
  • 收到总公司拨款怎么入账
  • 支付宝可以对公账户转账吗怎么转
  • 计提本月工资会计怎么做账
  • 基本户转账到法院怎么转
  • 餐饮行业招聘方案
  • 公司注销往来账要消吗
  • 企业投资所得如何征税
  • sqlserver怎么使用索引
  • window mysql
  • win8.1开机进入桌面
  • vista启用aero
  • bootcamp安装windows一直小白杠
  • win8.1 ie浏览器
  • win8系统开启摄像头权限
  • Win7系统打开蓝牙
  • ajax 编码
  • vue路由怎么实现
  • cacls命令怎么运用
  • CSS3 media queries结合jQuery实现响应式导航
  • python模块怎么用
  • js继承的三种方法
  • 企业登录初始密码
  • 华为领导班子成员名单
  • 代理记账和代理的区别
  • 国税商品分类目录
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设