Introducción a AJAX

14.6. Ejercicio 6

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Ejercicio 6 - Reflexión y Prototype</title>
<script type="text/javascript">
// Determina si un objeto implementa un método cuyo nombre
//  se pasa como parámetro
Object.prototype.implementa = function (nombreMetodo){
  return this[nombreMetodo] && this[nombreMetodo] instanceof Function;
}

var objeto1 = {
  muestraMensaje: function(){
    alert("hola mundo");
  }
};

var objeto2 = {
  a: 0,
  b: 0,
  suma: function() {
    return this.a + this.b;
  }
};

alert(objeto1.implementa("muestraMensaje"));
alert(objeto1.implementa("suma"));
alert(objeto2.implementa("muestraMensaje"));
alert(objeto2.implementa("suma"));
alert(objeto1.implementa("implementa"));
// Un objeto vacío también debería incluir el método "implementa"
alert({}.implementa('implementa'));
</script>
</head>

<body>
</body>
</html>

Descargar ZIP con la solución completa