Ausführen einer Funktion, die durch Namen, ein Objekt als Parameter
-
16-09-2019 - |
Frage
Hier ist das Problem - ich weiß Funktion nach Name (und diese Funktion bereits Formular ein externes Skript geladen wurde), aber ich weiß nicht eine tatsächliche Funktion Objekt Erfolg haben für mich zu rufen. Normalerweise würde ich eval (function_name + „(arg1, arg2)“) nennen, aber in meinem Fall muss ich es, ein Objekt zu übergeben, kein String. Einfaches Beispiel:
var div = document.getElementById('myDiv')
var func = "function_name" -- this function expects a DOM element passed, not id
Wie führe ich diese Funktion?
Danke! Andrey
Lösung
Es sollte möglich sein, die Funktion Objekt aus der obersten Ebene window
zu bekommen. Z.
var name = "function_name";
var func = window[name];
func( blah );
Andere Tipps
Verwenden Sie eval, es ist böse (siehe nur einen Buchstaben Differenz) Sie können einfach tun:
var div = document.getElementById('myDiv');
var result = window[function_name](div);
Dies ist möglich, weil Funktionen erstklassige Objekte in Javascript sind, so können Sie sie acces, wie Sie mit anyother Variable konnte. Beachten Sie, dass dies auch für Funktionen arbeiten, die Strings oder etwas als Paramter wollen:
var result = window[another_function_name]("string1", [1, "an array"]);