Gracias por la contribución.
Creo que tu solucion no asigna a las funciones anónimas metodo alguno.
¿donde esta el evento declarado, definido y asignado? Son las 3 cosas que busco para el ejemplo.
Respecto a que si un perro hace "miau" en fin .... la solución a este problema es reasignar a la instancia del perro el sonido por el que sea adecuado.
Código Javascript
:
Ver original<script language="javascript" type="text/javascript">
function Animal(nombre) {
//objeto Animal.
//propiedades
this.vidas=7;
this.sonido="Miau!!!!";
this.nombre=nombre;
//metodos
this.maulla=Maulla;
this.muerde=Muerde;
//eventos
this.onMuerde=new Function();
this.onMaulla=new Function();
return this;
}
function Maulla {
//Metodo del objeto Animal
if(this.vidas>0){
alert(this.sonido+" "+this.vidas);
this.onMaulla();
}else{
alert("Muerte");
delete this;
}
}
function Muerde(aQuien) {
if (aQuien.vidas>0){
aQuien.vidas-=1;
aQuien.maulla();
};
}
//Instanciamos los Animales
var Gato=new Animal("Roger");
var Perro=new Animal("Michael");
Perro.sonido = "Ladra"; // no afecta al ejercicio un perro no maulla :D
//Asigno al evento del Gato onMaulla a la accion El perro muerde al gato.
Gato.onMaulla = Perro.muerde(Gato);
//Asigno al evento del Perro onMuerde a la accion del Gato ->maullar
//Perro.onMuerde = GatoEsMordido();
Gato.maulla();
</script>