Ho questa JavaScript:Come si avvolge un costruttore?
var Type = function(name) {
this.name = name;
};
var t = new Type();
Ora voglio aggiungere questo:
var wrap = function(cls) {
// ... wrap constructor of Type ...
this.extraField = 1;
};
Così posso fare:
wrap(Type);
var t = new Type();
assertEquals(1, t.extraField);
[EDIT] mi piacerebbe un proprietà instance, non una proprietà class (static/shared).
Il codice eseguito nella funzione wrapper dovrebbe funzionare come se l'avessi incollato nel costruttore reale.
Il tipo di Type
non deve essere modificato.
Da quello che ho capito, vuoi aggiungere una proprietà aggiuntiva al costruttore? in modo che ulteriori nuove istanze abbiano quella proprietà? – Joseph
Potrebbe essere necessario cambiare semplicemente il prototipo di 'Type' all'interno della funzione' wrap() '. Ad esempio: 'var wrap = function (cls) {cls.prototype.extraField = 1; }; '? O forse è meglio creare un nuovo 'Tipo2' ereditato da' Tipo' con un membro aggiuntivo 'extraField'? –
Puoi descrivere il tuo problema più dettagliatamente? – seteh