Exécution d'une fonction par nom, passage d'un objet en tant que paramètre

Voici le problème – je connais la fonction par nom (et cette fonction a déjà été chargée sous forme d'un script externe), mais je n'ai pas d'objet fonction réel pour appeler. Normalement, j'appellerais eval (function_name + "(arg1, arg2)"), mais dans mon cas, je dois y transmettre un objet, pas une chaîne. Exemple simple:

var div = document.getElementById('myDiv') var func = "function_name" -- this function expects a DOM element passed, not id 

Comment exécuter cette fonction?

Merci! Andrey

Vous devriez pouvoir obtenir l'objet fonction de la window niveau supérieur. Par exemple

 var name = "function_name"; var func = window[name]; func( blah ); 

Ne jamais utiliser eval, c'est mauvais (voir une seule différence de lettre) Vous pouvez tout simplement faire:

 var div = document.getElementById('myDiv'); var result = window[function_name](div); 

Ceci est possible car les fonctions sont des objets de première classe en javascript, afin que vous puissiez les accéder comme vous le pouvez avec n'importe quelle autre variable. Notez que cela fonctionnera également pour les fonctions qui souhaitent des chaînes ou tout autre élément:

 var result = window[another_function_name]("string1", [1, "an array"]);