参考文章:
https://www.jianshu.com/p/2188dcd91090
https://www.freecodecamp.org/news/copying-stuff-in-javascript-how-to-differentiate-between-deep-and-shallow-copies-b6d8c1ef09cd/
思维导图
深拷贝和浅拷贝.jpg补充论点
深拷贝和浅拷贝的补充示意图
image.png谈一谈深拷贝的解决方案:
- 是否需要掌握自己写原生深拷贝?
我认为是不需要的,看原生代码并自己实现的最重要的作用是明白原理。
比如知道底层的原理不过就是:recursion
+=
而已。
- 那深拷贝的完美解决方案是什么?
我认为
spread operator
assign
stringify
已经可以解决80%以上的问题了。这些方法都有corner cases,但是他们的效率高,重量轻。另外,如果实在不放心,还可以使用lodash库的._clone()
来解决,但外接库总是会让app变的臃肿。没有所谓的“完美”,要做的是了解各个方法的优劣,做最优的排兵布阵而已。
网友评论