Esecuzione di una funzione per nome, passando un oggetto come parametro
-
16-09-2019 - |
Domanda
Ecco il problema - lo so funzione per nome (e che la funzione è già stata caricata forma uno script esterno), ma non ho un profitto reale funzione di oggetto per me di chiamare. Normalmente io chiamerei eval (function_name + "(arg1, arg2)"), ma nel mio caso ho bisogno di passare un oggetto ad esso, non è una stringa. Semplice esempio:
var div = document.getElementById('myDiv')
var func = "function_name" -- this function expects a DOM element passed, not id
Come faccio a eseguire questa funzione?
Grazie! Andrey
Soluzione
Si dovrebbe essere in grado di ottenere l'oggetto funzione dal window
di livello superiore. Per es.
var name = "function_name";
var func = window[name];
func( blah );
Altri suggerimenti
Non usare mai eval, vale la male (vedere la differenza una sola lettera) Si può semplicemente fare:
var div = document.getElementById('myDiv');
var result = window[function_name](div);
Questo è possibile perché le funzioni sono oggetti di prima classe in JavaScript, in modo da poterli acces come si potrebbe con ogni altro variabile. Si noti che questo funziona anche per le funzioni che vogliono stringhe o nulla come paramter:
var result = window[another_function_name]("string1", [1, "an array"]);