Unterschiede zwischen angular.copy () und JSON.parse (JSON.stringify ())?

8

Kann jemand die Unterschiede zwischen angular.copy () und JSON.parse (JSON.stringify ()) erklären? Sind da irgendwelche? Was empfehlen Sie zu verwenden? Ist angular.fromJson (angular.toJson ()) dasselbe wie JSON.parse (JSON.stringify ())?

Nur um zu erwähnen, ich habe gelesen Wie kann ich ein JavaScript-Objekt korrekt klonen? ? für JSON.parse (JSON.stringify ()) und angular.copy () reference für angular.copy ().

    
Marin Takanov 21.04.2015, 18:32
quelle

2 Antworten

9

Was JSON.parse(JSON.stringify()) nicht kopiert:

  • Funktionen
  • jedes Objekt, das eine spezielle Repräsentation hat, wie Date (es wird kopiert, aber nicht als Date )
  • Eigenschaften mit dem Wert undefined

angular.fromJson(angular.toJson()) ist im Grunde das Gleiche, außer dass angular.toJson() Eigenschaften auslässt, die von Angular intern verwendet werden (die mit $$ beginnen).

    
zeroflagL 21.04.2015, 18:59
quelle
7

Ich kann Ihre Frage ganz konkret beantworten, indem Sie darauf hinweisen, dass undefined anders behandelt wird:

%Vor%

Und im Allgemeinen würde ich angular.copy bevorzugen:

  • angular.copy sagt genau was Sie wollen; JSON.parse * JSON.stringify ist aus Lesbarkeitsgründen ein Hack.
  • angular.copy ist mit ziemlicher Sicherheit performanter, da es eine höhere Spezifikation dessen ist, was Sie versuchen zu tun. Wenn die Ingenieure, die es geschrieben haben, etwas weniger performant geschrieben haben, würden sie es mit der JSON-Version ...
  • implementieren

Das heißt, behandeln sie auch mehr esoterische Daten, wie zum Beispiel Funktionen? Ich kann das nicht von zu Hause aus beantworten, aber ich würde nachforschen (oder auf eine andere Antwort warten), bevor ich mich entscheide.

    
djechlin 21.04.2015 18:35
quelle