javascript 浅拷贝和深拷贝什么时候比较
When does javascript shallow copy vs. deep copy
我已经查看堆栈溢出答案一段时间了,但一直无法找到以下问题的明确、不矛盾的答案。 Javascript 浅拷贝和深拷贝什么时候比较?我已经看过流行的答案,在这种情况下有 400 answers/comments 并且每个人似乎都在争论它。如果您确定知道答案并且是专家,请帮助我们全力以赴。如果您在 Internet 上有一个 link 可以全面解释这一点,但我找不到,那也会有很大的帮助。非常感谢!
通常 JavaScript 根本不制作副本。分配变量、传递参数或返回值不会复制,它们只是 assign/pass 引用。
有一些内置函数可以用来制作副本,例如Array.prototype.slice()
and Object.assign()
。这些只会制作浅拷贝。
我认为没有任何标准的 JavaScript 函数可以进行深拷贝。但是,jQuery、lodash 和 underscore.js 等库中的函数可以执行此操作。例如,jQuery.extend()
类似于 Object.assign()
,但它有一个可选的 deep
参数,指示它应该执行深度复制。
大家好。这是这个问题的答案。谢谢!
我已经查看堆栈溢出答案一段时间了,但一直无法找到以下问题的明确、不矛盾的答案。 Javascript 浅拷贝和深拷贝什么时候比较?我已经看过流行的答案,在这种情况下有 400 answers/comments 并且每个人似乎都在争论它。如果您确定知道答案并且是专家,请帮助我们全力以赴。如果您在 Internet 上有一个 link 可以全面解释这一点,但我找不到,那也会有很大的帮助。非常感谢!
通常 JavaScript 根本不制作副本。分配变量、传递参数或返回值不会复制,它们只是 assign/pass 引用。
有一些内置函数可以用来制作副本,例如Array.prototype.slice()
and Object.assign()
。这些只会制作浅拷贝。
我认为没有任何标准的 JavaScript 函数可以进行深拷贝。但是,jQuery、lodash 和 underscore.js 等库中的函数可以执行此操作。例如,jQuery.extend()
类似于 Object.assign()
,但它有一个可选的 deep
参数,指示它应该执行深度复制。
大家好。这是这个问题的答案。谢谢!