Heim >Web-Frontend >js-Tutorial >Wie wandelt man generische Objekte in JavaScript in typisierte Instanzen um?
Umwandeln generischer Objekte in typisierte Instanzen in JavaScript
Problemstellung:
JSON-Antworten von Server enthalten häufig einfache Objekte, die Klasseninstanzen darstellen. Das Umwandeln dieser generischen Objekte in typisierte Instanzen ermöglicht die Verwendung ihrer Klassenmethoden und den Zugriff auf typisierte Daten.
Lösung:
Das Erstellen von Objektinstanzen erfordert den Aufruf ihrer Konstruktoren. Da JSON-Daten jedoch keine Konstruktorinformationen enthalten, ist ein anderer Ansatz erforderlich.
1. Iteratives Klonen:
Dieser Ansatz beinhaltet das Klonen der Eigenschaften der einfachen Objekte in neu erstellte Instanzen:
<code class="javascript">var personLiteral = ...; // JSON.parse("..."); var personInstance = new Person(); for (var prop in personLiteral) personInstance[prop] = personLiteral[prop];</code>
2. Mit Object.assign:
Object.assign kann verwendet werden, um dieselbe Aufgabe präziser zu erledigen:
<code class="javascript">var personInstance = Object.assign(new Person(), personLiteral);</code>
Für komplexere Objekte mit verschachtelten Strukturen iterieren Sie durch die Eigenschaften und Wenden Sie den gleichen Klonvorgang rekursiv an.
3. Klonen von benutzerdefinierten Konstruktoren:
Jeder Konstruktor kann erweitert werden, um einfache Objekte zu akzeptieren und sie zu klonen, wobei die erforderliche Logik verarbeitet wird:
<code class="javascript">Person.fromJSON = function(obj) { // custom code, as appropriate for Person instances // might invoke `new Person` return …; };</code>
Beispiel:
Wenden Sie in Ihrem spezifischen Szenario den Klonvorgang sowohl auf die Personen- als auch auf die Tierobjekte an:
<code class="javascript">var persons = JSON.parse(serverResponse); for (var i=0; i<persons.length; i++) { persons[i] = $.extend(new Person, persons[i]); for (var j=0; j<persons[i].animals; j++) { persons[i].animals[j] = $.extend(new Animal, persons[i].animals[j]); } }</code>
Denken Sie daran, dass Ausführungsmethoden dem Tierprototyp und nicht einzelnen Instanzen hinzugefügt werden sollten.
Das obige ist der detaillierte Inhalt vonWie wandelt man generische Objekte in JavaScript in typisierte Instanzen um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!