L'exécution d'une fonction par son nom, faire passer un objet en tant que paramètre

StackOverflow https://stackoverflow.com/questions/1676583

  •  16-09-2019
  •  | 
  •  

Question

Voici le problème - je sais que la fonction par nom (et que la fonction a déjà été chargé sous forme d'un script externe), mais je ne dispose pas d'un succès d'objet fonction réelle pour moi d'appeler. Normalement, je qualifierais eval (nom_fonction + « (arg1, arg2) »), mais dans mon cas je dois passer un objet à lui, 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 puis-je exécuter cette fonction?

Merci! Andrey

Était-ce utile?

La solution

Vous devriez être en mesure d'obtenir l'objet fonction du window haut niveau. Par exemple.

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

Autres conseils

Ne jamais utiliser eval, ESt mal (voir différence une seule lettre) Vous pouvez simplement faire:

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

Ceci est possible parce que les fonctions sont des objets de première classe en javascript, vous pouvez donc les acces que vous pouvez faire avec anyother variable. Notez que cela fonctionne également pour les fonctions qui veulent des chaînes ou quoi que ce soit comme paramter:

var result = window[another_function_name]("string1", [1, "an array"]);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top