Modification d'un Type de l'Objet en JavaScript
J'ai un tableau d'objet existant défini avec JSON. Les objets sont bien évidemment du type d'Objet. Comment puis-je associer à un objet personnalisé type de leur donner des fonctionnalités spécifiques?
si l'objet a d'autres attributs/méthodes, ce que vous avez besoin de plus? pourriez-vous donner un exemple?
.. je veux dire, avez-vous de ces coutumes, les types d'objets déjà définis ou vous voulez savoir comment le faire?
.. je veux dire, avez-vous de ces coutumes, les types d'objets déjà définis ou vous voulez savoir comment le faire?
OriginalL'auteur Ray | 2010-07-02
Vous devez vous connecter pour publier un commentaire.
Le chemin qui fonctionnent dans tous les navigateurs est d'augmenter chaque élément d'un tableau avec les propriétés et les méthodes que vous souhaitez, ou de passer de l'objet à un constructeur et créer un nouvel objet basé sur les anciennes propriétés de l'objet et des méthodes.
Ou si vous n'avez pas de soins sur IE:
OriginalL'auteur Jeremy
Je ne crois pas qu'il y est une manière de changer le type d'un objet une fois qu'il est créé. Heureusement, vous n'avez probablement pas besoin de changer de classe, de vos objets, vous serez probablement satisfait de donner les objets, quelques nouvelles méthodes et d'autres fonctionnalités. (La seule vraie différence est qu'arriverait-il si vous avez MODIFIÉ la classe, et la plupart des gens ne changent pas les classes alors que le code est en cours d'exécution.)
Je vais travailler pour vous un exemple. Tout d'abord, je vais créer un objet simple pour représenter les objets JSON vous avez:
Alors je vais créer un peu de classe que vous souhaitez être en mesure d'attribuer à
myobj
:Cette nouvelle
Speaker
classe a certaines fonctionnalité utile: il peut utiliser la méthodespeak()
à la sortie de l'information utile:D'exécution qui m'a donné le message "Bonjour, Sally". Malheureusement, vous ne voulez pas un NOUVEL objet (comme
s
) avec cette fonctionnalité, vous voulez que l'objet existant (myobj
). Voici comment faire:Maintenant, quand j'exécute ceci:
Je vois le message "Bonjour, Fred".
Pour résumer: créer un objet qui fait ce que vous voulez. Copie de toutes les méthodes (et d'assistance variables) de votre nouvel objet. Sauf pour certaines utilisations inhabituelles de l'héritage, il sera votre nouvel objet se comporter comme souhaité.
OriginalL'auteur mcherm
Si vous n'avez pas besoin de constructeur, vous pouvez en faire autant:
OriginalL'auteur Patrick Safarov
Si vous souhaitez utiliser une méthode spécifique sur eux, vous pouvez utiliser postuler/appel.
Ou vous pouvez copier les méthodes pour votre objet personnalisé.
OriginalL'auteur gblazex
Comme un complément à Jeremy de réponse, vous pouvez utiliser l'Objet.créer au lieu de directement jouer avec proto. Vous aurez également besoin d'une "extension" de la fonction.
Donc, compte tenu de Jeremy exemple, vous pourriez avoir quelque chose comme ceci:
props.hasOwnProperty(prop)
dansextend
fonction.OriginalL'auteur Xose Lluis