Estoy haciendo OO javascript por primera vez. He leído sobre herencia y prototipo y pensé que lo había descifrado. Hasta que descubrí este pequeño ejemplo.Herencia en javascript, variables en el "padre"
function TestObject(data)
{
this.test_array = [];
this.clone_array = [];
this.dosomestuff = function()
{
for(var i=0; i<this.test_array.length; i++)
{
this.clone_array[i]=this.test_array[i];
}
}
this.__construct = function(data)
{
console.log("Testing Object Values" ,this.clone_array);
this.test_array = data;
};
}
TestObject2.prototype = new TestObject();
function TestObject2(data)
{
this.__construct(data);
this.dothings = function()
{
this.dosomestuff();
}
}
Si hago lo siguiente:
var foo = new TestObject2([1,2,3,4]);
foo.dothings();
var bar = new TestObject2([4,5,6]);
bar.dothings();
Yo esperaría que la consola para mostrar:
Testing Object Values, []
Testing Object Values, []
Sin embargo se nota:
Testing Object Values, []
Testing Object Values, [1,2,3,4]
El problema es de Por supuesto esta llamada:
TestObject2.prototype = new TestObject();
¿Cómo puedo obtener que las variables primarias en TestObject se "reinicien", además de restablecerlas manualmente en el método __construct?
¿Hay alguna otra forma de TestObject2 de heredar todos los valores/métodos de TestObject y de "nuevo" para comportarse como esperaría de una manera PHP OO? (Estoy seguro de que la manera en que JS está haciendo esto es muy extraño, como si mi cerebro me funcionara correctamente desde la Universidad Java funciona como PHP)
Demo aquí: http://jsbin.com/olino3 – johnwards