总结:
对于数组而言,实现深拷贝的方法 slice(0)、concat()、[...arr]、JSON.parse(JSON.stringify(arr)),这几种方法只有JSON.parse(JSON.stringify(arr))是真实意义的深拷贝,其他的只是一维数组的深拷贝,对于多维数组仅实现了一维的深拷贝,但是JSON.parse(JSON.stringify(arr))对于undefined的值不起作用,会发生改变。
对于对象而言,实现深拷贝的方法 {...obj}、Object.assign({},obj)、JSON.parse(JSON.stringify(obj)),这几种方法只有JSON.parse(JSON.stringify(obj))是真实意义的深拷贝,其他的对于单层对象为深拷贝,JSON.parse(JSON.stringify(obj))仍然对undefined、正则表达式类型、函数类型等的值不起作用。
实现真正意义上的深拷贝可以使用递归。
数组方法:
代码:
结果:
对象方法:
代码:
结果