Array de funciones en Javascript
var array_of_functions = [
first_function('a string'),
second_function('a string'),
third_function('a string'),
forth_function('a string')
]
array_of_functions[0];
Eso no funciona como se pretende porque cada función en el arreglo se ejecuta cuando se crea el arreglo.
¿Cuál es la forma correcta de ejecutar cualquier función en el arreglo haciendo:
array_of_functions[0]; // or, array_of_functions[1] etc.
¡Gracias!
Respuesta #1
var array_of_functions = [
first_function,
second_function,
third_function,
forth_function
]
y luego cuando quieras ejecutar una función dada en el arreglo:
array_of_functions[0]('a string');
Respuesta #2
Creo que esto es lo que el autor original quería lograr:
var array_of_functions = [
function() { first_function('a string') },
function() { second_function('a string') },
function() { third_function('a string') },
function() { fourth_function('a string') }
]
for (i = 0; i < array_of_functions.length; i++) {
array_of_functions[i]();
}
Con suerte, esto ayudará a otros (como a mí hace 20 minutos :-) buscando cualquier pista sobre cómo llamar a funciones de JS en un arreglo.
Respuesta #3
Sin más detalles sobre lo que estás tratando de lograr, estamos un poco adivinando. Pero podrías salirte con la tuya usando notación de objetos para hacer algo como esto...
var myFuncs = {
firstFunc: function(string) {
// do something
},
secondFunc: function(string) {
// do something
},
thirdFunc: function(string) {
// do something
}
}
Y llamar a uno de ellos...
myFuncs.firstFunc('a string')
Respuesta #4
Complementaría este hilo publicando una forma más sencilla de ejecutar varias funciones dentro de un Array usando el método shift() Javascript descrito originalmente aquí
var a = function(){ console.log("this is function: a") }
var b = function(){ console.log("this is function: b") }
var c = function(){ console.log("this is function: c") }
var foo = [a,b,c];
while (foo.length){
foo.shift().call();
}
Respuesta #5
O simplemente:
var myFuncs = {
firstFun: function(string) {
// do something
},
secondFunc: function(string) {
// do something
},
thirdFunc: function(string) {
// do something
}
}
