Heim > Web-Frontend > js-Tutorial > Hauptteil

Wie wandelt man einfache JavaScript-Objekte in Instanzen von Klassen um?

Mary-Kate Olsen
Freigeben: 2024-10-18 13:02:02
Original
972 Leute haben es durchsucht

How to Cast Plain JavaScript Objects into Instances of Classes?

Umwandeln einfacher Objekte in Klasseninstanzen in JavaScript

Das Erstellen echter Instanzen aus einfachen Objekten in JavaScript ist möglich, bringt jedoch bestimmte Herausforderungen mit sich. Lassen Sie uns ein praktisches Szenario und seine Lösung untersuchen.

Problem

Betrachten Sie zwei Klassen, Person und Tier. Der Server gibt ein Array generischer Person-Objekte zurück:

[
  { personName: "John", animals: [{ animalName: "cheetah" }, { animalName: "giraffe" }] },
  { personName: "Smith", animals: [{ animalName: "cat" }, { animalName: "dog" }] }
]
Nach dem Login kopieren

Das Ziel besteht darin, dieses Objekt-Array in ein typisiertes Array von Person-Instanzen umzuwandeln, um Aufrufe wie „persons[0].Animals[2].Run zu ermöglichen ().

Lösung

Das Erstellen von Instanzen aus einfachen Objekten erfordert den Aufruf ihrer Konstruktoren und die korrekte Zuweisung von Eigenschaften.

Ein allgemeiner Ansatz besteht darin, dass Konstruktoren Objekte akzeptieren, die Instanzen ähneln, und klonen ihnen. Die interne Instanzerstellungslogik wird von den Konstruktoren verwaltet.

Benutzerdefinierte Methode

Eine andere Lösung besteht darin, eine statische Methode für die Person-Klasse zu erstellen, die Objekte entgegennimmt und Instanzen generiert:

Person.fromJSON = function(obj) {
  // Custom code to create instances based on `obj`
  return ...;
};
Nach dem Login kopieren

Einfacher Ansatz für einfache Fälle

Für einfache Fälle wie Ihren, in denen es keine Konstruktoren und nur öffentliche Eigenschaften gibt, können Sie Folgendes tun:

var personInstance = new Person();
for (var prop in personLiteral)
  personInstance[prop] = personLiteral[prop];
Nach dem Login kopieren

Oder Sie können Object verwenden. zuweisen:

var personInstance = Object.assign(new Person(), personLiteral);
Nach dem Login kopieren

Verfolgen Sie einen ähnlichen Ansatz, um Animal-Instanzen zu erstellen.

Andere Implementierung

Da JSON keine Klasseninformationen übermittelt, müssen Sie die kennen Objektstruktur im Voraus. In Ihrem Fall würde die Implementierung so aussehen:

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]);
  }
}
Nach dem Login kopieren

Zusätzliche Hinweise

Ihre Animal-Klasse definiert ihre Ausführungsmethode wahrscheinlich auf dem Prototyp und nicht auf jeder Instanz.

Das obige ist der detaillierte Inhalt vonWie wandelt man einfache JavaScript-Objekte in Instanzen von Klassen um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!