Estoy haciendo programación orientada a objetos en JavaScript sin Prototype/jQuery (uso jQuery para otras cosas). Hasta ahora ha funcionado bien, pero tuve un problema con la herencia. Básicamente, cuando declaro objetos en un constructor, se comparten entre instancias. A continuación se muestra un código de ejemplo:Herencia de Javascript: ¿los objetos declarados en el constructor se comparten entre instancias?
A = function()
{
this.y = new Array();
}
A.prototype.doStuff = function(n)
{
this.y.push(n);
}
B = function()
{
}
B.prototype = new A();
var b1 = new B();
var b2 = new B();
b1.doStuff(100);
b2.doStuff(200);
console.log("b1:");
console.log(b1);
console.log("b2:");
console.log(b2);
Esto da salida a una serie [100, 200]
tanto para b1
y b2
. Lo que quiero es que b1
y b2
tengan sus propias matrices separadas para y
. ¿Cómo hago esto?
(PS. Asumo que el sistema de la clase de los Prototipos ha construido algo en esto. Sin embargo, yo preferiría no volver a escribir un montón de código para utilizar ese sistema de clases)
Sí, terminé haciendo algo como lo que describiste en tu publicación de blog. Básicamente, tengo una función 'construct (target)' separada que inicializa variables específicas de instancia para 'target'. Los niños llaman esto a su súper clase. No es particularmente bonito, pero parece funcionar. –