Ver Mensaje Individual
  #2 (permalink)  
Antiguo 23/05/2013, 16:07
alexg88
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años, 10 meses
Puntos: 344
Respuesta: Objetos, Eventos y ... problemas

Buenas,

Tienes algunas cosas un poco raras, como guardar la referencia al objeto dentro del objeto (!!!), pero el problema principal es que estabas creando una variable global.

En concreto:

this.ChargeEvent = function(){

objeto = this.Objeto;
document.body.addEventListener("keypress", function () {ModificadorEdad(objeto);}, false);
}

Esa variable se crea globalmente y se sobreescribe con el último objeto que la sobrescribe. Para evitar esto, debes poner var para crearla de manera local a la función.

Otra cosa es que tengas en cuenta que Javascript es sensible a mayúsculas y minúsculas.

Te dejo como lo haría yo quitando cosas redundantes:

Código Javascript:
Ver original
  1. /* Funcion Simple que recibe por argumentos, la referencia del Objeto al que se le va a modificar la edad : edad actual +1*/
  2.  
  3. function ModificadorEdad(objeto)
  4. {
  5.     objeto.Age++;
  6.     alert(objeto.Age);
  7. }
  8.  
  9. /*Prototipo Persona, tiene dos propiedades, edad (sera modificada por la funcion de arriba y Objeto, que va a guardar la referencia del objeto instanciado*/
  10.  
  11. function Persona(age)
  12. {
  13.     this.Age = age;
  14.    
  15.     /*Segundo metodo, que añadirá un evento al body, este llamara a la funcion simple de arriva que modifica la edad del objeto que se le pase por argumento*/
  16.      
  17.     this.ChargeEvent = function()
  18.     {
  19.         var thisp = this;
  20.         document.body.addEventListener("keypress", function ()
  21.                                        {
  22.                                            ModificadorEdad(thisp);
  23.                                        }, false);        
  24.     }
  25. }
  26.  
  27. /*Instanciamos dos Objetos Persona : titos y pedro, cada uno lleva a cavo los dos metodos del prototipo*/
  28.  
  29. var titos = new Persona(30);
  30. titos.ChargeEvent();
  31.  
  32. var pedro = new Persona(40);
  33. pedro.ChargeEvent();

Un saludo.