我一直在浏览堆栈溢出答案已有一段时间,但无法找到以下问题的清晰,无矛盾的答案。 Javascript浅拷贝与深拷贝什么时候出现?我已经查看了流行的答案,在这种情况下,有400个答案/评论,每个人似乎都在争论。如果您肯定知道答案并且是专家,请全力帮助我们。如果您在Internet上有一个链接可以完全解释此问题,而我却找不到,那也将是一个很大的帮助。非常感谢!
通常,JavaScript根本不会复制。分配变量,传递参数或返回值不会复制,它们只是分配/传递引用。
[有些内置功能可用于制作副本,例如Array.prototype.slice()
和Array.prototype.slice()
。这些仅作浅表副本。
我认为没有任何标准的JavaScript函数可以复制深层副本。但是,像jQuery,lodash和underscore.js这样的库中有一些函数可以做到这一点。例如,Object.assign()
与Object.assign()
相似,但是它具有可选的jQuery.extend()
参数,该参数指示应执行深度复制。