深度克隆函数
大约 1 分钟
原生方法实现
原生方法实现深拷贝,主要是使用JSON.parse()
与JSON.stringify()
,首先将对象序列化为JSON
字符串,再将JSON
字符串反序列化为对象,使用这种方式效率比较高,但是会有一些问题,对于循环引用的对象无法实现深拷贝,对于被拷贝的对象,如果对象中有属性为Date
对象,此种方式深拷贝会将时间对象转化为字符串;如果对象中有属性为RegExp
对象、Error
对象,此种方式深拷贝会得到一个空对象;如果对象中有属性为function
对象、undefined
、Symbol
值,此种方式深拷贝会忽略这些值;如果对象中有属性为NaN
、Infinity
、-Infinity
,此种方式深拷贝会将结果转为null
。