• 深拷贝和浅拷贝


    前段时间因为复制的原因导致我的数据有问题,遂与小姐妹论之,她说她之前也遇到过这种问题,然后从别人那里copy了代码解决了这个问题,据说这还有名词解释叫做深拷贝,于是我就记在了心上,等我加班不这么猛了我就来学习一手这些东西(连续加班五个月的吐血吐槽[哭唧唧]})

    1.浅拷贝

    为啥要叫浅拷贝呢,顾名思义就是复制的很浅呗,那到底是怎么个浅法呢,度娘说拷贝就是拷贝指向对象的指针。

    哦,意思就是说我们平时的直接赋值
    const newObj = oldObj
    这样做看似是直接把老对象的东西赋值给了新对象,但是实际上我们只是创建了一个新对象,然后复制了指向这个对象的指针,然后将这一堆指针存在了新对象里,并不是真的拥有了对象里的属性,倘若你想要对新对象里的属性进行修改,必然就会顺藤摸瓜把老对象里的属性更改了。
    这就好像名媛团们发朋友圈,她们跑去lv店里拍个照,然后发个朋友圈,让大家是她们要买的,结果朋友们约出来让她们背上lv看看,怎么办呢,lv还在专柜里躺着呢,要动也只能动专柜里那个跟照片里一样的那个了hhh

    2.深拷贝
    那深拷贝又是怎么个意思呢?
    其实就是创建了一个新对象,然后照着原来的对象挨个自己创建了跟老对象一样的属性,因此在这种情况下,你就可以随意的更改新对象里的属性,因为这跟老对象没有关系了。
    还是按照上面那个例子来说,名媛们买不起那个lv,于是自己复刻了一个一模一样的包,就可以背着到处跑啦

    回到代码上来说,想要实现深拷贝其实有几种办法
    (1)使用循环的方式,跑完整个流程复制一个一模一样的对象(循环的方式很多不多写)
    (2)更为简单的办法就是使用JSON的方式转换一下

    let data = JSON.stringify(oldObj);//将对象转换为json字符串形式
    let newObj= JSON.parse(data);//将转换而来的字符串转换为原生js对象

    今日份输出o了

  • 相关阅读:
    Python零基础入门的基础案例
    今天不抠图,Python实现一键换底片!想换什么换什么(附源码)
    python基础:如何使用 pip 安装第三方库
    Python教程:matplotlib 绘制双Y轴曲线图
    福利来啦,送给大家一个小游戏的源码,不要错过哟
    招聘信息太多,哪家职位才是适合你的?Python采集招聘信息
    我的python菜鸟之路1
    我的SAS菜鸟之路3
    我的SAS菜鸟之路2
    猪鹿蝶1
  • 原文地址:https://www.cnblogs.com/fdd-111/p/13858338.html
Copyright © 2020-2023  润新知