Marco illustrd illustrd illustr

Comment puis-je stocker des fonctions dans un tableau avec des propriétés nommées, donc je peux appeler comme

FunctionArray["DoThis"] 

ou même

 FunctionArray[integer] 

Remarque: je ne souhaite pas utiliser eval .

La chose importante à retenir est que les fonctions sont des objets de première classe en JavaScript. Vous pouvez donc les transmettre en tant que paramètres, les utiliser comme valeurs d'objet, etc. La valeur (s) dans un tableau n'est qu'un exemple de cela.

Notez que nous ne stockons pas les fonctions dans un tableau bien que nous puissions le faire et les accéder avec un index numérique. Nous les stockons dans un objet régulier avec le nom avec lequel nous voulons accéder.

 var functions = { blah: function() { alert("blah"); }, foo: function() { console.log("foo"); } }; 

Appeler comme

 functions.blah(); 

ou

 functions["blah"](); 

Vous voulez un objet littéral, pas un tableau.

 x = { 'dothis': function() { alert('hi'); } }; 

Objet

 x['dothis']() 

Vous pouvez également invoquer dynamiquement

 y = 'dothis'; x[y]() 

Invocation codée statique / dur:

 x.dothis() 

Si vous voulez un tableau, cependant:

 x = [function(){alert('hi');}][0]() 

Vous pouvez accéder aux propriétés d'un objet par son nom (x ["A"]), si vous souhaitez assigner des index (0 = "A"), vous devez le faire, voici un exemple . (Je ne suis pas sûr que la boucle for Work fonctionne sur n'importe quel navigateur, j'ai testé sur Firefox, mais vous pouvez avoir l'idée)

 var x = {}; xA = function() { alert("func 1"); }; xB = function() { alert("func 2"); }; var i = 0; for (a in x) { x[i] = x[a]; ++i; } x[0](); // func 1 x[1](); // func 2 x["A"](); // func 1 x["B"](); // func 2 

Vous pouvez effectivement le faire, il suffit de le déclarer à l'extérieur du tableau, de la sorte …

 const your_function = function(){ console.log( "I am your function" ) } const group = [ 0, "lizard", false, your_function() ] group[ 3 ] 

Vous pouvez également changer l'endroit où vous l'appelez, si vous voulez …

 const your_function = function(){ console.log( "I am your function" ) } const group = [ 0, "lizard", false, your_function ] group[ 3 ]() 

EDIT: les fonctions ont été nommées erronées: / sry

Vous pouvez stocker les choses directement dans un tableau, mais comme un objet, par exemple:

 var Functions = { DoThis: function() { alert("do this"); } }; Functions['DoThis'](); //alerts "do this" Functions.DoThis() //alerts "do this" 

Vous pouvez essayer ici .