Conversion d'objets simples en instances de fonction ("classes") en javascript
function Person() {
var self = this;
self.personName="";
self.animals=[];
}
function Animal(){
var self=this;
self.animalName="";
self.run=function(meters){
.....
}
}
Réponse du serveur:
[{personName:John,animals:[{animalName:cheetah},{animalName:giraffe}]} , {personName:Smith,animals:[{animalName:cat},{animalName:dog}]} ]
Je suis la Personne tableau à partir du serveur. Je veux cast Personne générique tableau typé Personne de tableau. Donc je peux l'utiliser
persons[0].Animals[2].Run();
J'ai fondé du Javascript
Object.create(Person,person1);
Mais je veux de la croix-navigateur version de celui-ci avec de la matrice de soutien
ObjectArray.create(Person,persons);
ou
Object.create(Person[],persons);
source d'informationauteur ozz | 2012-08-04
Vous devez vous connecter pour publier un commentaire.
La création d'un objet en JavaScript nécessite l'invocation de son constructeur. Donc, au premier abord, vous aurez besoin de trouver les bons arguments, qui peuvent ne pas toujours être seulement des propriétés. Après cela, vous pouvez réassigner toutes les propriétés publiques à partir du JSON analysé objet de la instances.
Une solution générale serait que chaque constructeur accepte tous les objets qui ressemblent à des instances (y compris les instances) et des clones. Toute la logique nécessaire à la création de leur propre cas sera situé au bon endroit ensuite.
Ou même mieux que de surcharger le constructeur pourrait être de créer une méthode statique de la classe qui prend des objets et de créer des instances d'eux:
Votre cas est très simple, car vous n'avez pas d'arguments, et seulement des propriétés publiques. Pour changer
{personName:John,animals:[]}
à une instance d'objet, utilisez ceci:Vous pouvez également utiliser
Object.assign
fonctionnalité (ou, par exemple,jQuery.extend
pré-ES6) pour cela:La création de la
Animal
cas des œuvres analogues.JSON n'est pas le transport de toute information sur les cours, vous devez connaître la structure avant. Dans votre cas, ce sera:
Btw, votre
run
méthodes semble susceptible d'être ajouté sur leAnimal.prototype
objet à la place de chaque instance.Il semble que vous ayez des classes qui ont certains prototypes de méthodes et que vous souhaitez simplement être en mesure de faire de vos objets d'utiliser ces méthodes. http://jsfiddle.net/6CrQL/3/
Cela pourrait être beaucoup plus facile (et nous avons pu éviter la copie) si tout le monde a soutenu l'
__proto__
propriété http://jsfiddle.net/6CrQL/2/Tout d'abord: En JavaScript, vous n'avez pas de classes comme en C++, Java ou C#. Si vous ne pouvez pas vraiment avoir un tableau typé.
Ce que vous faites devrait, pour l'essentiel des travaux pour les variables, mais pas pour les fonctions. Donc, vous devez ajouter les fonctions de premier. Regardez le code suivant pour avoir une idée.
Comment sur la création d'une méthode Statique sur la Classe Personne, qui va accepter votre réponse du serveur et de créer des variables requises.
C'est juste une idée. Merci de voir si cela correspond à votre problème.