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
// Prototipo Deportista function DeportistaPrototype(){ this.Age = 22; this.Name = 'Titos' this.Sports = ['Vela','Remo'] } // Prototipo DeportistaDeElite function DeportistaElitePrototype(){ this.Experience = 10; } // LLevo a cabo la herencia, DeportistaElite Hereda las tres propiedades de Deportista DeportistaElitePrototype.prototype = new DeportistaPrototype(); //Inicializo un Objeto para el DeportistaElitePrototype 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
// Prototipo Deportista function DeportistaPrototype(age,name,ArrayOfSports){ this.Age = age; this.Name = name; this.Sports = ArrayOfSports; } // Prototipo DeportistaDeElite function DeportistaElitePrototype(experience){ this.Experience = experiencie; } // LLevo a cabo la herencia, DeportistaElite Hereda las tres propiedades de Deportista DeportistaElitePrototype.prototype = new DeportistaPrototype(); //Inicializo un Objeto para el DeportistaElitePrototype 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?