J'ai ce JavaScript:Comment emballer un constructeur?
var Type = function(name) {
this.name = name;
};
var t = new Type();
Maintenant, je veux ajouter ceci:
var wrap = function(cls) {
// ... wrap constructor of Type ...
this.extraField = 1;
};
Je peux faire:
wrap(Type);
var t = new Type();
assertEquals(1, t.extraField);
[EDIT] Je voudrais une propriété d'instance, pas une propriété de classe (statique/partagée).
Le code exécuté dans la fonction wrapper devrait fonctionner comme si je l'avais collé dans le constructeur réel.
Le type de Type
ne doit pas changer.
D'après ce que je comprends, vous voulez ajouter une propriété supplémentaire au constructeur? de sorte que d'autres nouvelles instances ont cette propriété? – Joseph
Peut être vous avez simplement besoin de changer le prototype de 'Type' dans la fonction' wrap() '. Par exemple: 'var wrap = fonction (cls) {cls.prototype.extraField = 1; }; '? Ou peut-être est-il préférable de créer un nouveau 'Type2' hérité de' Type' avec un autre membre 'extraField'? –
Pouvez-vous décrire votre problème plus en détail? – seteh