Resulta que quiero hacer algo como ésto:
Código PHP:
function hazAlgo(miAlerta, fdespues) {
alert(miAlerta);
fdespues();
}
Código PHP:
function hazAlgo(miAlerta, fdespues) {
alert(miAlerta);
fdespues();
}
function saluda() {
alert("hola");
}
hazAlgo("No oigo mi saludo.", saluda);
Código PHP:
function hazAlgo(miAlerta, fdespues) {
alert(miAlerta);
fdespues();
}
function saluda(conQue) {
alert(conQue);
}
- hazAlgo("No oigo mi saludo.", saluda ); -> salta un undefined porque conQue = undefined.
- hazAlgo("No oigo mi saludo.", saluda("adios!") ); -> será todavía más desastroso, porque lo primero que ejecuta es saluda("adios!") y luego ejecuta hazAlgo("No oigo mi saludo.", undefined), y al intentar hacer undefined() ocurre un error.
Bueno, entramos en los closures, donde podemos "guardar" una función con sus argumentos:
Código PHP:
function suma(a,b) {
alert("La suma de "+a+" y "+b+" es "+(a+b)+".");
}
Function.prototype.toClosure = function() {
var f = this;
var a = arguments;
return function() {
f.apply(this,a);
}
}
var suma5y10 = suma.toClosure(5,10);
Entonces sí funciona:
Código PHP:
function suma(a,b) {
alert("La suma de "+a+" y "+b+" es "+(a+b)+".");
}
function hazAlgo(miAlerta, fdespues) {
alert(miAlerta);
fdespues();
}
Function.prototype.toClosure = function() {
var f = this;
var a = arguments;
return function() {
f.apply(this,a);
}
}
var suma5y10 = suma.toClosure(5,10);
hazAlgo("No veo mi suma...", suma5y10);
Código PHP:
function suma(a,b) {
alert("La suma de "+a+" y "+b+" es "+(a+b)+".");
}
function hazAlgo(miAlerta, n, fdespues) {
alert("miAlerta es : "+miAlerta+" \n n es: "+n+" \n fdespues es: "+fdespues);
if(--n>0) {
alert(miAlerta);
setTimeout("hazAlgo('"+miAlerta+"', "+n+", "+fdespues+")", 1000);
}
else {
fdespues();
}
}
Function.prototype.toClosure = function() {
var f = this;
var a = arguments;
return function() {
f.apply(this,a);
}
}
var suma5y10 = suma.toClosure(5,10);
hazAlgo("No veo mi suma...", 3, suma5y10);
Siento la introducción
![Neurótico](http://static.forosdelweb.com/fdwtheme/images/smilies/scared.png)
¿Alguna idea para hacer ésto y que valga para cualquier función que no sea suma()?
Un saludo
![de acuerdo](http://static.forosdelweb.com/fdwtheme/images/smilies/dedosarriba.png)