Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 11th, 2012  |  syntax: None  |  size: 1.15 KB  |  hits: 18  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Function.prototype.memorizaParametro = function(parametro) {
  2.   var funcionSobreLaQueSeEjecuto_memorizaParametro = this;
  3.   return function() {
  4.     var argsArray = Array.prototype.slice.call(arguments,1); //Menos el primero
  5.     argsArray.unshift(parametro);
  6.     return funcionSobreLaQueSeEjecuto_memorizaParametro.apply(this,argsArray);
  7.   }
  8. }
  9.  
  10. //Primer ejemplo: uso puramente funcional
  11.  
  12. var alfa = function(uno,dos,tres) {
  13.   var r = uno+dos+tres;
  14.   console.log("Primer parametro: "+uno)
  15.   console.log("Resultado: "+r);
  16.   return r;
  17. }
  18.  
  19. var beta = alfa.memorizaParametro(7);
  20.  
  21. alfa(1,2,3); //Primer parametro 1, 6
  22. beta(1,2,3); //Primer parametro 7, 12
  23.  
  24. //Segundo ejemplo: "metodo" de un objeto (usando this)
  25.  
  26. var bob = {
  27.    nombre:'Bob Esponja',
  28.    cocinar:function(receta,numero){
  29.      var texto = '\u00A1 Yo '+this.nombre+' voy a preparar '+numero+' '+receta+' !';
  30.      console.log(texto);return texto;
  31.    }
  32. }
  33.  
  34.  
  35. bob.cocinar('pizzas',20); //¡ Yo Bob Esponja voy a preparar 20 pizzas !
  36. console.log('\u00A1 Ese no es tu trabajo chico !');
  37. bob.cocinar = bob.cocinar.memorizaParametro('cangreburguers');
  38. bob.cocinar('pizzas',20); //¡ Yo Bob Esponja voy a preparar 20 cangreburguers !