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 :
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!