Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Herencias y Constructor: Como heredar los argumentos de constructor

Estas en el tema de Herencias y Constructor: Como heredar los argumentos de constructor en el foro de Javascript en Foros del Web. Buenas caballeros! Planteo el siguiente problema; ¿como heredar los argumentos de un constructor? , pregunta corta pero ambigua, veamos un ejemplo primerizo de como hago ...
  #1 (permalink)  
Antiguo 20/05/2013, 20:14
Avatar de 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?
  #2 (permalink)  
Antiguo 20/05/2013, 21:38
Avatar de Aijoona
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Buenos Aires
Mensajes: 779
Antigüedad: 13 años
Puntos: 343
Respuesta: Herencias y Constructor: Como heredar los argumentos de constructor

Lo tenés que hace explicitamente.

Código Javascript:
Ver original
  1. function Person(name, lastname) {
  2.   this.name = name;
  3.   this.lastname = lastname;
  4. }
  5.  
  6. Person.prototype.toString = function() {
  7.   return 'Person[' + this.name + ' ' + this.lastname + ']';
  8. }
  9.  
  10. function Pirate(name, lastname, gold) {
  11.   Person.call(this, name, lastname);
  12.   this.gold = gold;
  13. }
  14.  
  15. Pirate.prototype = new Person;
  16.  
  17. var myPirate = new Pirate('Jose', 'El Cuervo', 2500);
  18.  
  19. myPirate.toString(); // "Person[Jose El Cuervo]"
__________________
blog | @aijoona
  #3 (permalink)  
Antiguo 21/05/2013, 06:17
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 3 meses
Puntos: 30
Respuesta: Herencias y Constructor: Como heredar los argumentos de constructor

Te agradezco tu respuesta, pero a falta de parecer que quiero abusar de tu conocimiento ..., Me gustaria saber el por que de esta formula : Person.prototype.toString = function() {(y el retorno de los argumentos)}


Es la primera vez que veo algo asi, buscando un poco, me encuentro en la apgina de mozilla que es un metodo no estandar y que piensan dejarlo en desuso en gecko 17, https://developer.mozilla.org/es/doc...ction/toString
  #4 (permalink)  
Antiguo 21/05/2013, 06:32
Avatar de Aijoona
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Buenos Aires
Mensajes: 779
Antigüedad: 13 años
Puntos: 343
Respuesta: Herencias y Constructor: Como heredar los argumentos de constructor

Lo que leiste es OTRA cosa (el toString de una function devuelve el código de la misma).

.toString devuelve la representación como string literal del objeto en el que se invoca. Por herencia siempre se invoca al .toString de Object. En este ejemplo lo unico que hice fue hacer un "override" de dicho "método" para tener mi propia representación de string.

Sos libre de jugar con el ejemplo (podes borrar / alterar el toString) para entender como se comporta.
__________________
blog | @aijoona

Etiquetas: argumentos, conservar, constructor
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 16:58.