Ver Mensaje Individual
  #7 (permalink)  
Antiguo 13/06/2014, 03:53
Avatar de marlanga
marlanga
 
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 10 meses
Puntos: 206
Respuesta: Comportamiento extraño: Require.js y herencia javascript

¿El qué ocurre?

Código Javascript:
Ver original
  1. function A(arr){
  2.     this.arr=arr;
  3.     this.arr.push("d");
  4. }
  5.  
  6. A.prototype.getArr=function(){ return this.arr; };
  7.  
  8. function B(){
  9.     A.call(this, ["a","b","c"]); //Llamada al constructor padre
  10. };
  11.  
  12. function C(){
  13.     A.call(this, ["a","b","c"]); //Llamada al constructor padre
  14. };
  15.  
  16. B.prototype=Object.create(A.prototype);
  17. var b=new B();
  18. console.log(b.getArr());
  19.  
  20. C.prototype=new A;
  21. var c=new C();
  22. 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).