Maison  >  Article  >  interface Web  >  Comment convertir des objets en instances de classe en JavaScript

Comment convertir des objets en instances de classe en JavaScript

Patricia Arquette
Patricia Arquetteoriginal
2024-10-18 11:43:03234parcourir

How to Cast Objects to Class Instances in JavaScript

Casting d'objets en instances de classe en JavaScript

De nombreux cas surviennent lorsque les développeurs rencontrent le besoin de convertir des objets JavaScript simples, généralement reçus d'un serveur. réponse, dans des instances de classe spécifiques pour un traitement ultérieur. Cette exigence survient lorsque les objets reçus du serveur ne disposent pas des méthodes et propriétés nécessaires associées à la classe qu'ils représentent.

Prérequis

Pour convertir des objets en instances de classe, nous doit d'abord comprendre ce qui suit :

  • En JavaScript, la création d'instances d'objet nécessite l'appel de son constructeur.
  • Le constructeur prend des arguments spécifiques, qui peuvent s'étendre au-delà de simples propriétés.
  • Après avoir invoqué le constructeur, nous devons attribuer des propriétés publiques de l'objet JSON analysé aux instances créées.

Solution

Une solution robuste consiste à garantir que chaque constructeur peut accepter des objets ressemblant à des instances (y compris des instances réelles) et les cloner de manière appropriée. Cela garantit que la logique de création d'instance est correctement gérée.

Une approche alternative et plus efficace consiste à créer une méthode statique au sein de la classe pour convertir les objets en instances :

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

Exemple spécifique

Considérons l'exemple simplifié suivant :

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

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

Pour convertir la réponse JSON, nous pouvons utiliser l'approche suivante :

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

Remarque : La méthode d'exécution fournie doit être ajoutée à l'objet Animal.prototype plutôt qu'à des instances individuelles.

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!

Déclaration:
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