Skip to content

Instantly share code, notes, and snippets.

@joseanpg
Created August 21, 2011 09:35
Show Gist options
  • Save joseanpg/1160391 to your computer and use it in GitHub Desktop.
Save joseanpg/1160391 to your computer and use it in GitHub Desktop.
GEJS-4 memorizaParametro (aplicación parcial)
Function.prototype.memorizaParametro = function(parametro) {
var funcionSobreLaQueSeEjecuto_memorizaParametro = this;
return function() {
var argsArray = Array.prototype.slice.call(arguments,0);//Convertimos en array
argsArray.unshift(parametro);
return funcionSobreLaQueSeEjecuto_memorizaParametro.apply(this,argsArray);
}
}
//Primer ejemplo: uso puramente funcional
var alfa = function(uno,dos,tres) {
var r = uno+dos+tres;
console.log("Primer parametro: "+uno)
console.log("Resultado: "+r);
return r;
}
var beta = alfa.memorizaParametro(7);//Partial application
alfa(7,2,3); //Primer parametro 1, 6
beta(2,3); //Primer parametro 7, 12
//Segundo ejemplo: "metodo" de un objeto (usando this)
var bob = {
nombre:'Bob Esponja',
cocinar:function(receta,numero){
var texto = '\u00A1 Yo '+this.nombre+' voy a preparar '+numero+' '+receta+' !';
console.log(texto);return texto;
}
}
bob.cocinar('pizzas',20); //¡ Yo Bob Esponja voy a preparar 20 pizzas !
console.log('\u00A1 Ese no es tu trabajo chico !');
bob.cocinar = bob.cocinar.memorizaParametro('cangreburguers'); //Partial application
bob.cocinar(20); //¡ Yo Bob Esponja voy a preparar 20 cangreburguers !
@boton
Copy link

boton commented Aug 23, 2011

@joseanpg muchas gracias por la explicación, así da gusto preguntar :)
@juandopazo gracias por el link, lo conocía (tengo el libro en preorder) pero me falta estudiar un poco más antes de pegarme con el juguete de Resig ;)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment