¿El qué ocurre?
Código Javascript
:
Ver originalfunction A(arr){
this.arr=arr;
this.arr.push("d");
}
A.prototype.getArr=function(){ return this.arr; };
function B(){
A.call(this, ["a","b","c"]); //Llamada al constructor padre
};
function C(){
A.call(this, ["a","b","c"]); //Llamada al constructor padre
};
B.prototype=Object.create(A.prototype);
var b=new B();
console.log(b.getArr());
C.prototype=new A;
var c=new C();
console.log(c.getArr());
B funciona bien, C tira error por ejecutar un push sobre un argumento "undefined" en la llamada de la línea 20.
No olvidar que aunque buscamos que B y C hereden todo de A, al constructor del padre hay que llamarlo explícitamente (porque en realidad no hay herencia, la estamos simulando).