una - pasar valores a javascript
Pasar el número variable de argumentos de una función a otra (4)
De hecho, puede hacer esto con aplicar, si entiendo su pregunta correctamente:
function show(foo, bar) { window.alert(foo+'' ''+bar); }
function run(f, args) { f.apply(null,args); }
run(show, [''foo'', ''bar'']);
Posible duplicado:
¿Es posible enviar un número variable de argumentos a una función de JavaScript?
Puedo usar arguments
para obtener un número variable de argumentos dentro de una función, pero ¿cómo puedo pasarlos a otra función sin saber su prototipo?
function show(foo, bar) { window.alert(foo+'' ''+bar); }
function run(f) { f(arguments); } // not correct, what to do?
run(show, ''foo'', ''bar'');
Nota: No puedo garantizar el número de argumentos necesarios para la función f
que se pasa a run
. Es decir, aunque el ejemplo que se muestra tiene 2 argumentos, podría ser 0-infinito, por lo que lo siguiente no es apropiado:
function run(f) { f(arguments[1], arguments[2]); }
En tu ejemplo para pasar argumentos variables para mostrar esto funciona
function show(foo, bar) { window.alert(foo+'' ''+bar); }
function run(f) { f.apply(null, Array().slice.call(arguments, 1)); }
run(show, ''foo'', ''bar'');
La forma principal de pasar un conjunto de argumentos generados mediante programación a una función es mediante el uso del método ''aplicar'' de la función.
function show(foo, bar) {
window.alert(foo+'' ''+bar);
}
function run(f) {
// use splice to get all the arguments after ''f''
var args = Array.prototype.splice.call(arguments, 1);
f.apply(null, args);
}
run(show, ''foo'', ''bar'');
necesitas usar la función de aplicación ... aquí es cómo lo haces:
function variableFunction1()
{
alert("variableFunction1 arguments length: " + arguments.length);
// calls second varargs function keeping current ''this''.
variableFunction2.apply(this, arguments);
}
function variableFunction2()
{
alert("variableFunction2 arguments length: " + arguments.length);
}
variableFunction1(''a'',''b'',''c'');