在ES6中新增了扩展运算符,可以实现对数组和对象的复制,那么这种复制是深拷贝还是浅拷贝呢?
其实,从上面 的两个示例可以看出来,扩展运算符对数据的复制,其实依然属于浅拷贝。
那么,咱就总结一下,哪些方案可以实现浅拷贝和深拷贝:
1)浅拷贝
Object.assign() 该方法用于对象复制时,也是浅拷贝
数组的slice方法、concat方法、Array.from方法以及扩展运算符都算是浅拷贝
2)深拷贝
递归方案 经典的方案 (其实就是通过循环一层一层的进行拷贝)
JSON.parse()方法 这个方案简单易懂,不过也有缺点,对于undefined、function、symbol 会在转换过程中被忽略