Klonen eines TypeScript-Objekts

9

Ich habe eine Typoskript-Klasse

%Vor%

Ich habe dann eine Instanz dieser Klasse (das ist ein Beispiel):

%Vor%

Ich speichere dann dieses Restaurantobjekt in einer Art Cache.

%Vor%

dann später in meiner Bewerbung bekomme ich das Restaurant zurück

%Vor%

Aber da Javascripts als Verweis auf Objekte übergeben werden, werden die Änderungen, die ich an restToEdit vornahm, auch im Restaurant gespeichert, das sich im Cache befindet.

Ich möchte grundsätzlich, dass das Restaurant im Cache eine ganz andere Instanz ist als der restToEdit.

Ich habe versucht mit jQuery.clone und zu erweitern, aber es scheint nicht zu funktionieren, und ich denke, das ist, weil es ein Typoskript-Objekt ist. Oder ist das egal?

Jede Antwort, wie man dieses Objekt klont, wäre zu begrüßen

Danke

    
mwild 03.10.2016, 13:49
quelle

4 Antworten

1

.clone () klont nur DOM-Elemente. Um JavaScript-Objekte zu klonen, versuchen Sie jQuery.extend . So etwas Ähnliches

%Vor%

Typescript wird in JavaScript übersetzt. Also, JavaScript Weg wird gut funktionieren.

Demo:

%Vor% %Vor%
    
Adnan Umer 03.10.2016, 13:57
quelle
13
  • Verwenden von standardmäßigen ES6-Funktionen

    %Vor%

    Achtung: Dies führt zu einem flachen Klon.

    Diese ausgezeichnete Seite von MDN enthält jede Menge Details beim Klonen, einschließlich eines Polyfill für ES5

  • Ein "schneller" Weg zum Klonen ist die Verwendung von JSON Dienstprogramme

    %Vor%
  • Ein "richtiger" Weg zum Klonen ist die Implementierung einer Klonmethode oder eines Kopierkonstruktors ...

Ich weiß, ich weiß nicht genug JQuery

    
Bruno Grieder 03.10.2016 14:00
quelle
4

Das scheint bei mir zu funktionieren:

%Vor%

Object.create erstellt eine neue Instanz mit leeren Eigenschaften Object.assign übernimmt dann diese neue Instanz und weist die Eigenschaften

zu

Eine robustere Version einer Clone-Funktion

%Vor%     
Scot 27.01.2017 21:19
quelle
3

Wenn Sie TS 2.1 verwenden, können Sie mit dem Objektspreizungsoperator eine flache Kopie erstellen:

%Vor%     
Ondrej Slinták 04.05.2017 11:16
quelle

Tags und Links