Ce n'est jamais une approche privilégiée. Au lieu de conserver le nom de la fonction dans func_name
vous auriez pu conserver la référence à une fonction avec autant de succès dans quelque chose comme func_to_call
.
Si vous devez absolument conserver la référence de la fonction sous la forme d'une chaîne de caractères, vous utiliserez généralement une table de hachage pour faire correspondre un nom arbitraire à une variable (JS dispose de fonctions de première classe, ce qui le rend possible).
myFunction = function(){};
var obj = {func_name: myFunction};
obj['func_name']();//executes the function
Fiddled (Je ne sais pas pourquoi, c'est un si petit script :)
Il a été suggéré d'utiliser eval(func_name)
- Toutefois, cela pourrait rapidement devenir incontrôlable en raison de la délimitation du champ d'application de la JS.
Vous avez également déclaré votre myFunction = function(){};
comme une variable globale. D'une part, cela vous permet de la référencer en tant que window[func_name]
mais d'un autre côté, cela pollue la portée globale.