Heim >Web-Frontend >js-Tutorial >So wandeln Sie Objekte in Klasseninstanzen in JavaScript um

So wandeln Sie Objekte in Klasseninstanzen in JavaScript um

Patricia Arquette
Patricia ArquetteOriginal
2024-10-18 11:43:03369Durchsuche

How to Cast Objects to Class Instances in JavaScript

Objekte in Klasseninstanzen in JavaScript umwandeln

In vielen Fällen müssen Entwickler einfache JavaScript-Objekte umwandeln, die normalerweise von einem Server empfangen werden Antwort in bestimmte Klasseninstanzen zur weiteren Verarbeitung. Diese Anforderung entsteht, wenn den vom Server empfangenen Objekten die notwendigen Methoden und Eigenschaften fehlen, die mit der Klasse verknüpft sind, die sie darstellen.

Voraussetzungen

Um Objekte in Klasseninstanzen umzuwandeln, müssen wir muss zunächst Folgendes verstehen:

  • In JavaScript erfordert das Erstellen einer Objektinstanz den Aufruf ihres Konstruktors.
  • Der Konstruktor akzeptiert bestimmte Argumente, die über einfache Eigenschaften hinausgehen können.
  • Nach dem Aufruf des Konstruktors müssen wir den erstellten Instanzen öffentliche Eigenschaften aus dem analysierten JSON-Objekt zuweisen.

Lösung

Eine robuste Lösung ist sicherzustellen dass jeder Konstruktor Objekte akzeptieren kann, die Instanzen ähneln (einschließlich tatsächlicher Instanzen), und diese entsprechend klonen kann. Dadurch wird sichergestellt, dass die Instanzerstellungslogik korrekt gehandhabt wird.

Ein alternativer und effizienterer Ansatz besteht darin, eine statische Methode innerhalb der Klasse zu erstellen, um Objekte in Instanzen umzuwandeln:

Person.fromJSON = function(obj) {
    // Custom code for creating instances of Person
    return …;
};

Spezifisches Beispiel

Betrachten Sie das folgende vereinfachte Beispiel:

function Person() {
    this.personName = "";
    this.animals = [];
}

function Animal(){
    this.animalName = "";
    this.run = function(meters){
        .....
    }
}

Um die JSON-Antwort zu konvertieren, können wir den folgenden Ansatz verwenden:

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]);
    }
}

Hinweis: Die bereitgestellte Ausführungsmethode sollte dem Animal.prototype-Objekt und nicht einzelnen Instanzen hinzugefügt werden.

Das obige ist der detaillierte Inhalt vonSo wandeln Sie Objekte in Klasseninstanzen in JavaScript 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