不会还有人不懂深拷贝吧不会吧

引言

深拷贝浅拷贝是一道经典的面试题,在实际编程中也有着不可忽视的作用,本文将帮助你从0理解浅拷贝深拷贝的本质以及实现

五种数据类型

1.基本数据类型:数字,字符串

2.数组

复制引用
    const a[]=[2,4,6]
    const b[]=a[] //b数组为a数组的引用对象,每当a改变数值,b将随之改变
浅拷贝
    const a[]=[2,4,6]
    const b[]=...a
    这里用了ES6的语法糖...拓展运算符把a数组复制了一边,此时b数组是全新复制一个数组对象,当改变a数组d的值时,b数组不会随之改变。到这里有同学问,深拷贝就这?当然不是了,现在目标数组只有一层,如果遇到嵌套数组呢?
    const a[]=[2,[2,3,4]]
深拷贝
    要实现深拷贝就要用到递归的思想了,把数组一层一层地复制下去,否则只有第一层是全新的对象,第二层就会是目标数组的对象引用,关于递归的思想我们会在后面说
复制代码

3.json

4.系统变量

系统变量:
    以 Date 为例子 js中有一种封装好的方法可以复制系统对象:把自定义的系统对象名字赋值给同类型系统对象
    const Date01=new Date
    const Date02=(Date01)
复制代码

5.自定义对象

6.symbol

ES6 引入了一种新的原始数据类型 Symbol ,表示独一无二的值,最大的用法是用来定义对象的唯一属性名。
复制代码
Symbol.for()
Symbol.for() 类似单例模式,首先会在全局搜索被登记的 Symbol 中是否有该字符串参数作为名称的 Symbol 值,如果有即返回该 Symbol 值,若没有则新建并返回一个以该字符串参数为名称的 Symbol 值,并登记在全局环境中供搜索。
复制代码
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享