什么时候javascript浅拷贝与深拷贝

时间:2019-11-18 19:48:28

标签: javascript deep-copy shallow-copy

我已经看了一段时间的堆栈溢出答案,却无法找到以下问题的清晰,无矛盾的答案。 Javascript浅拷贝与深拷贝什么时候出现?我已经查看了流行的答案,在这种情况下,有400个答案/评论,每个人似乎都在争论。如果您肯定知道答案并且是专家,请全力帮助我们。如果您在Internet上有一个链接可以完全解释此问题,而我却找不到,那也将是一个很大的帮助。真的很感激!

2 个答案:

答案 0 :(得分:1)

通常,JavaScript根本不会复制。分配变量,传递参数或返回值不会复制,它们只是分配/传递引用。

有一些内置功能可用于制作副本,例如Array.prototype.slice()Object.assign()。这些只能进行浅拷贝。

我认为没有任何标准的JavaScript函数可以复制深层副本。但是,像jQuery,lodash和underscore.js这样的库中有一些函数可以做到这一点。例如,jQuery.extend()Object.assign()类似,但是它具有一个可选的deep参数,该参数指示应执行深度复制。

答案 1 :(得分:1)