Foros del Web » Programando para Internet » Javascript »

Problema al usar prototype para herencia

Estas en el tema de Problema al usar prototype para herencia en el foro de Javascript en Foros del Web. Hola: El problema que tengo es el siguiente: Al extender una clase con prototype se ejecuta el constructor de la clase padre y no quiero ...
  #1 (permalink)  
Antiguo 01/12/2012, 07:38
Avatar de Gustavo72  
Fecha de Ingreso: abril-2008
Ubicación: -32.956045,-60.661355
Mensajes: 197
Antigüedad: 16 años
Puntos: 9
Problema al usar prototype para herencia

Hola:

El problema que tengo es el siguiente:
Al extender una clase con prototype se ejecuta el constructor de la clase padre y no quiero que esto suceda.

Lo explico con un pequeño ejemplo:

Código Javascript:
Ver original
  1. function a() {
  2.   alert('a');
  3. }
  4. function b() {
  5.   a.call(this);
  6.   alert('b');
  7. }
  8. b.prototype=new a();

Al ejecutar sólo este código (sin crear ninguna instancia del objeto) aparece el 'alert: a' cuando se ejecuta: b.prototype=new a(). Algo que no deseo que ocurra.

¿Alguna idea de cómo hacer para evitar esto?
__________________
Saludos.

Gustavo
  #2 (permalink)  
Antiguo 01/12/2012, 09:25
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: Problema al usar prototype para herencia

Cita:
Iniciado por Gustavo72 Ver Mensaje
Hola:

El problema que tengo es el siguiente:
Al extender una clase con prototype se ejecuta el constructor de la clase padre y no quiero que esto suceda.
Algo que podrías hacer es crear un método en el segundo objeto que entregue una instancia del primero. De esa manera podrías acceder a todas las propiedades y métodos en el momento que quieras y sólo invocarías a ese constructor del primer objeto cuando invoques a este nuevo método:
Código PHP:
function a() {
  
alert('a');
}
function 
b() {
  
alert('b');
}
b.prototype.a=a;
b=new b;
b.a(); 
  #3 (permalink)  
Antiguo 01/12/2012, 10:57
Avatar de Gustavo72  
Fecha de Ingreso: abril-2008
Ubicación: -32.956045,-60.661355
Mensajes: 197
Antigüedad: 16 años
Puntos: 9
Respuesta: Problema al usar prototype para herencia

Muchísimas gracias Panino!!!
Resolví el tema de esta manera:

Código Javascript:
Ver original
  1. function a(vA) {
  2.     this.vA=vA;
  3.     alert('a');
  4.     this.getA=function() {
  5.         alert(this.vA);
  6.     };
  7. }
  8. function b(vA, vB) {
  9.     a.call(this, vA);
  10.     this.vB=vB;
  11.     alert('b');
  12.     this.getB=function() {
  13.         alert(this.vB);
  14.     };
  15. }
  16. b.prototype.a=a;
  17.  
  18. alert('fin definición');
  19.  
  20. var x=new b(3, 7);
  21. x.getA();
  22. x.getB();

Según mi visión la manera correcta de extender la definición de un objeto sería:
b.prototype.a=a;

Y no:
b.prototype=new a();
Como se explica en muchos tutoriales.

Hecho de esta manera no se ejecuta ningún alert durante la definición (es decir no se ejecuta ninguna constructora), el objeto b contiene todos los métodos y propiedades del objeto a y las constructoras sólo se ejecutan al instanciar el objeto.

Una vez más muchísimas gracias por la ayuda!
__________________
Saludos.

Gustavo

Etiquetas: objetos, prototypejs
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:45.