Esiste un modo in javascript per ottenere la definizione di una determinata funzione come una stringa, che può essere eventualmente modificata e valutata?
-
07-07-2019 - |
Domanda
Sto cercando di valutare una funzione in un nuovo contesto, ovvero uno che contiene una determinata parola definita che non esiste nell'ambito. È abbastanza facile se ho la definizione della funzione come stringa, ma vorrei fornire la possibilità di farlo con un elenco regolare di funzioni, in questo modo:
var funcs = {
first: function() { return 'yayaya'; },
second: function() { return 'okokok' + keyword; },
...
};
poi più tardi:
function Thing () {};
for (func in funcs) {
var definition = funcs[func].definition();
var keyword = "NOW I AM THE KEYWORD";
var actual_func_with_keyword_defined = eval(definition);
Thing.prototype[func] = actual_func_with_keyword_defined;
}
Quello che mi manca è la funzione definition () o equivalente, che restituisce l'origine della funzione. Questo è possibile in JavaScript?
Soluzione
Funzionerà, anche se sono sicuro che esiste una soluzione più lunga ed elegante:
function foo() {
}
var bar = '' + foo; //type cast to a string by adding an empty string
alert(bar);
Altri suggerimenti
Prova semplicemente a eliminare .definition ()
.
Il modo standard di JS è chiamare toString ()
sulla funzione. In questo modo:
function myFun() {}
myFun.toString() // gives "function myFun() {}",
// potentially with white space differences
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow