martes, 15 de septiembre de 2015

Eliminar funciones en Javascript


Hola, en esta ocasión veremos un caso práctico de como eliminar funciones en javascript, para tal tarea crearemos una simple función que regresa un simple string, dos botones: uno para mostrar en un div el valor devuelto por la función y el otro para eliminar la función y mostrar un mensaje de que la función no existe. Para eliminar la función utilizaremos la propiedad undefined que nos permitirá en este caso indicar que a la función no le ha sido asignado ningún valor, por lo tanto, la función en ese instante dejará de existir en la memoria. Si intentamos acceder a ella a partir de ese instante obtendremos una excepción como la siguiente: Uncaught TypeError: foo is not a function. Por lo tanto es conveniente ir comprobando con una sentencia if de su existencia o no.



Eliminar funciones en Javascript




Código fuente del ejemplo ...

<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8" />
<script>
 /* Función a eliminar */
 foo = function(){
  return "Hello World";
 }
 
 window.onload = function(){
  /* Author: Manu Dávila | Web: http://jquery-manual.blogspot.com */
  /* Al hacer click sobre este botón la función estará operativa */
  document.getElementById("btn-1").onclick = function(){
   
   /* Si la función existe llamarla */
   if (foo !== undefined)
   {
    document.getElementById("result").innerHTML = foo();
   }
  };
  
  /* Al hacer click sobre este botón la función será destruida */
  document.getElementById("btn-2").onclick = function(){
  
   /* Destruir la función */
   foo = undefined;
   
   /* Si la función ha sido destruida */
   if (foo === undefined)
   {
    document.getElementById("result").innerHTML = "foo() no es una función";
   }
  };
 };
 
</script>
</head>
<body>
<h3>Eliminar funciones en Javascript</h3>
<button type="button" id="btn-1">Function foo()</button>
<button type="button" id="btn-2">Eliminar function foo()</button>
<div id="result"></div>
</body>
</html>