Maison > interface Web > js tutoriel > le corps du texte

Comment convertir des objets JavaScript simples en instances de classes ?

Mary-Kate Olsen
Libérer: 2024-10-18 13:02:02
original
1062 Les gens l'ont consulté

How to Cast Plain JavaScript Objects into Instances of Classes?

Créer des objets simples en instances de classe en JavaScript

Créer des instances réelles à partir d'objets simples en JavaScript est possible mais comporte certains défis. Explorons un scénario pratique et sa solution.

Problème

Considérons deux classes, Personne et Animal. Le serveur renvoie un tableau d'objets Person génériques :

[
  { personName: "John", animals: [{ animalName: "cheetah" }, { animalName: "giraffe" }] },
  { personName: "Smith", animals: [{ animalName: "cat" }, { animalName: "dog" }] }
]
Copier après la connexion

L'objectif est de convertir ce tableau d'objets en un tableau typé d'instances Person pour permettre des appels tels que des personnes[0].Animals[2].Run ().

Solution

Créer des instances à partir d'objets simples implique d'appeler leurs constructeurs et d'attribuer des propriétés correctement.

Une approche générale consiste à demander aux constructeurs d'accepter des objets qui ressemblent à des instances et de les cloner. eux. La logique de création d'instance interne est gérée par les constructeurs.

Méthode personnalisée

Une autre solution consiste à créer une méthode statique sur la classe Person qui prend des objets et génère des instances :

Person.fromJSON = function(obj) {
  // Custom code to create instances based on `obj`
  return ...;
};
Copier après la connexion

Approche simple pour les cas de base

Pour les cas simples comme le vôtre, où il n'y a pas de constructeurs et uniquement des propriétés publiques, vous pouvez faire ceci :

var personInstance = new Person();
for (var prop in personLiteral)
  personInstance[prop] = personLiteral[prop];
Copier après la connexion

Ou, vous pouvez utiliser Object. assign :

var personInstance = Object.assign(new Person(), personLiteral);
Copier après la connexion

Suivez une approche similaire pour créer des instances Animal.

Autre implémentation

Étant donné que JSON ne transmet pas d'informations de classe, vous devrez connaître le structure de l'objet à l'avance. Dans votre cas, l'implémentation ressemblerait à ceci :

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]);
  }
}
Copier après la connexion

Notes supplémentaires

Votre classe Animal définit probablement sa méthode d'exécution sur le prototype, plutôt que sur chaque instance.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal