Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/05/2013, 20:14
Avatar de Albuss
Albuss
 
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 3 meses
Puntos: 30
Pregunta Herencias y Constructor: Como heredar los argumentos de constructor

Buenas caballeros!


Planteo el siguiente problema; ¿como heredar los argumentos de un constructor? , pregunta corta pero ambigua, veamos un ejemplo primerizo de como hago para heredar un constructor inicializando algunas propiedades :

Código Javascript:
Ver original
  1. // Prototipo Deportista
  2.  
  3. function  DeportistaPrototype(){
  4.  
  5. this.Age = 22;
  6. this.Name = 'Titos'
  7. this.Sports = ['Vela','Remo']
  8.  
  9. }
  10.  
  11. // Prototipo DeportistaDeElite
  12.  
  13. function DeportistaElitePrototype(){
  14.  
  15. this.Experience = 10;
  16.  
  17. }
  18.  
  19.  
  20. // LLevo a cabo la herencia, DeportistaElite Hereda las tres propiedades de Deportista
  21.  
  22.  
  23. DeportistaElitePrototype.prototype = new DeportistaPrototype();
  24.  
  25.  
  26. //Inicializo un Objeto para el DeportistaElitePrototype
  27.  
  28. var titos = new DeportistaElitePrototype();


Bien, en el ejemplo de arriba, vemos como sin ningun problema declaramos dos prototipos, declaramos la herencia y inicializamos un objeto del segundo prototipo, si vamos a cualquier consola y buscamos las propiedades del objeto titos, veremos que este objeto ha heredado correctamente las 3 propiedades del primer prototipo.


Ahora bien, ¿que pasa si quiero inicializar una propiedad con un argumento del constructor? ¿como puedo hacer que se hereden los argumentos que se le deben pasar al constructor?

veamos un ejemplo, modificando el ejemplo de arriba :

Código Javascript:
Ver original
  1. // Prototipo Deportista
  2.  
  3. function  DeportistaPrototype(age,name,ArrayOfSports){
  4.  
  5. this.Age = age;
  6. this.Name = name;
  7. this.Sports = ArrayOfSports;
  8.  
  9. }
  10.  
  11. // Prototipo DeportistaDeElite
  12.  
  13. function DeportistaElitePrototype(experience){
  14.  
  15. this.Experience = experiencie;
  16.  
  17. }
  18.  
  19.  
  20. // LLevo a cabo la herencia, DeportistaElite Hereda las tres propiedades de Deportista
  21.  
  22.  
  23. DeportistaElitePrototype.prototype = new DeportistaPrototype();
  24.  
  25.  
  26. //Inicializo un Objeto para el DeportistaElitePrototype
  27.  
  28. var titos = new DeportistaElitePrototype(22,titos,['sport1','sport2'],10);


Si nos vamos a la consola y vemos las propiedades del objeto titos, veremos que no se ha inicializado ninguna propiedad, por que no se ha conservado los argumentos que se deben pasar al constructor ¿por que? ¿alguna manera de hacer esto posible?