Heim  >  Artikel  >  Web-Frontend  >  Wie wandelt man generische Objekte in JavaScript in typisierte Instanzen um?

Wie wandelt man generische Objekte in JavaScript in typisierte Instanzen um?

DDD
DDDOriginal
2024-10-18 12:05:28894Durchsuche

How to Cast Generic Objects to Typed Instances in JavaScript?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn