【问题标题】:When does javascript shallow copy vs. deep copyjavascript 浅拷贝和深拷贝什么时候做
【发布时间】:2019-11-18 19:48:28
【问题描述】:

我已经查看了一段时间的堆栈溢出答案,但无法找到以下问题的明确、不矛盾的答案。 Javascript 浅拷贝和深拷贝什么时候出现?我已经查看了流行的答案,在这种情况下有 400 个答案/cmets,每个人似乎都在争论它。如果您确定答案并且是专家,请帮助我们。如果您在互联网上有一个链接可以完整地解释这一点,而我无法找到,那也将是一个很大的帮助。真的很感激!

【问题讨论】:

  • 你是如何复制的?这会有所不同
  • JavaScript 从不复制,除非你明确告诉它。
  • 谢谢@epascarello,这就是我要找的!
  • 嗨@epascarello。您是否想将 freecodecamp 的答案作为官方答案并获得一些分数,还是我应该将其作为答案。只是让我知道不要着急。您是否还可以包括函数参数是按值传递的。谢谢!

标签: javascript deep-copy shallow-copy


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:
    猜你喜欢
    • 1970-01-01
    • 2012-04-12
    • 2011-03-22
    • 2015-01-13
    • 1970-01-01
    • 2010-09-16
    • 2012-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多