Ver Mensaje Individual
  #5 (permalink)  
Antiguo 24/03/2013, 09:52
Avatar de zerokilled
zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 8 meses
Puntos: 1485
Respuesta: Reescribir un metodo

buenas...
no se a ustedes pero a mi me parece que el asunto viene por la comprehensión de cómo funciona el esquema de prototipos. es por ello que me animo a ofrecer mi versión.

básicamente sucede porque el objeto tiene declarado explícitamente un identificador (propiedad o método). javascript sigue una cadena o camino para la resolución de identificadores. en este caso, comienza por el objeto en sí, luego por su prototipo y continua por el resto de los prototipos según de quién va heredando. si se quiere invocar un método específico de la jerarquía cuando ocurre el conflicto por el nombre de identificador, se debe accesar a dicho método e invocarlo mediante la función call o apply:
Código:
function F(a,b){
this.a = a;
this.b = b;
this.m = function(){ return this.a + this.b; };
}

F.prototype.m = function(){ return this.a - this.b; };

var f = new F(0,1);
F.prototype.m.call(f); // método call;
F.prototype.m.apply(f, []); // método apply, si no requiere argumento el segundo parámetro se puede obviar;
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.