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/* Funcion Simple que recibe por argumentos, la referencia del Objeto al que se le va a modificar la edad : edad actual +1*/
function ModificadorEdad(objeto)
{
objeto.Age++;
alert(objeto.Age);
}
/*Prototipo Persona, tiene dos propiedades, edad (sera modificada por la funcion de arriba y Objeto, que va a guardar la referencia del objeto instanciado*/
function Persona(age)
{
this.Age = age;
/*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*/
this.ChargeEvent = function()
{
var thisp = this;
document.body.addEventListener("keypress", function ()
{
ModificadorEdad(thisp);
}, false);
}
}
/*Instanciamos dos Objetos Persona : titos y pedro, cada uno lleva a cavo los dos metodos del prototipo*/
var titos = new Persona(30);
titos.ChargeEvent();
var pedro = new Persona(40);
pedro.ChargeEvent();
Un saludo.