angular.copy()和JSON.parse(JSON.stringify())之间的区别?

Mar*_*nov 8 javascript json clone object angularjs

有人能解释angular.copy()和JSON.parse(JSON.stringify())之间的区别吗?有吗?你会建议使用什么?angular.fromJson(angular.toJson())是否与JSON.parse(JSON.stringify())相同?

我只想提一下,我如何正确克隆JavaScript对象?对于angular.copy()的JSON.parse(JSON.stringify())和angular.copy()引用.

a b*_*ver 10

什么JSON.parse(JSON.stringify())不会复制:

  • 功能
  • 任何具有特殊表示的对象,如Date(它将被复制但不会被复制Date)
  • 具有该值的属性 undefined

angular.fromJson(angular.toJson())基本上是相同的,除了angular.toJson()省略Angular内部使用的属性(以那些开头的$$).


dje*_*lin 7

我可以非常具体地回答你的问题,指出他们undefined区别对待:

> JSON.parse(JSON.stringify(undefined))
SyntaxError: Unexpected token u
Run Code Online (Sandbox Code Playgroud)

更一般地说我更喜欢angular.copy:

  • angular.copy 正好说出你想要的东西; 从可读性的角度来看,JSON.parse*JSON.stringify是一个hack.
  • angular.copy几乎肯定更具性能,因为它是你想要做的更高级别的规范.如果谁写的工程师写的东西高性能的,他们将与JSON版本实现它?

话虽如此,他们是否以同样的方式处理更多深奥的数据,如功能?我无法回答这个问题,但在决定之前我会研究(或等待另一个答案).