深拷贝和浅拷贝

面试重点:深拷贝和浅拷贝?(1重点,2—3要点)

  •   总结

     基本数据类型

     赋值的是 存储的数据

     赋值之后 两个变量没有关系

    引用数据类型

    浅拷贝

    直接赋值 赋值的是 内存地址

    赋值之后 两个变量使用的相同内容,一个操作,另一个也会改变

     深拷贝

    循环遍历,获取引用数据类型中,存储的每一个数据信息

    赋值到新的变量中

    赋值之后 两个变量,没有任何关系

  • 区别

浅复制:值类型是直接赋值,而引用类型只是指针的改变

深复制:值类型是直接赋值,而引用类型是直接的复制

  • 深复制和浅复制的方法?

浅复制在ES6中,obj.assign(target,obj1,obj2)

深复制在ES5中,JSON.parse(JSON.stringify(obj))

在jQuery中,$.extend(true,target,obj1,obj2)如果第一个参数传递true的情况下,则实现的是深复制

  • 自己如何实现深复制

循环遍历,判断值类型。

如果值为null 或者type of !== “object” 直接return返回

如果是数组和对象,进行递归处理,递归处理注意出口,不要进入死循环,直到值类型,然后进行返回赋值

  • 缺点

深复制在ES5中,JSON.parse(JSON.stringify(obj))参数如果为undefined、函数、正则表达式、promise对象、无法进行深拷贝

解决办法:第一种:lodash插件库:_.clone(value)浅复制  _.cloneDeep(value)深复制

          第二种:jquery.extend()

  • 深复制应用场景

在Vue中数据丢失的时候。第一种:$set()  第二种:深拷贝

后续还会更新,有关面试重点的题,希望可以帮助大家,我们一起学习一起进步,嘿嘿。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值