tengo esta JavaScript:¿Cómo envuelvo un constructor?
var Type = function(name) {
this.name = name;
};
var t = new Type();
Ahora quiero añadir lo siguiente:
var wrap = function(cls) {
// ... wrap constructor of Type ...
this.extraField = 1;
};
Así que puedo hacer:
wrap(Type);
var t = new Type();
assertEquals(1, t.extraField);
[EDIT] me gustaría una propiedad de instancia, no una propiedad de clase (estática/compartida).
El código ejecutado en la función de envoltura debería funcionar como si lo hubiera pegado en el constructor real.
El tipo de Type
no debe cambiar.
Por lo que entiendo, ¿desea agregar una propiedad adicional al constructor? ¿para que nuevas instancias tengan esa propiedad? – Joseph
Puede ser que necesite simplemente cambiar el prototipo de 'Tipo' dentro de la función' wrap() '. Por ejemplo: 'var wrap = function (cls) {cls.prototype.extraField = 1; }; '? ¿O puede ser mejor crear un nuevo 'Type2' heredado de' Type' con un miembro 'extraField' adicional? –
¿Puedes describir tu problema con más detalle? – seteh