Existe uma maneira em javascript para obter a definição de uma dada função como uma string, a ser possivelmente modificado e evaled?
-
07-07-2019 - |
Pergunta
Eu estou tentando avaliar uma função em um novo contexto, ou seja, aquele que contém uma determinada palavra definido que não existe no escopo. É muito fácil se eu tiver a definição da função como uma string, mas eu gostaria de fornecer a capacidade de fazer isso com uma lista regular de funções, assim:
var funcs = {
first: function() { return 'yayaya'; },
second: function() { return 'okokok' + keyword; },
...
};
, em seguida, mais tarde:
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;
}
O que estou em falta é a função de definição () ou equivalente, que retorna a fonte da função. Isso é possível em javascript?
Solução
Isto irá funcionar, embora eu tenho certeza que há um demorado solução, mais elegante:
function foo() {
}
var bar = '' + foo; //type cast to a string by adding an empty string
alert(bar);
Outras dicas
Tente simplesmente tirando o .definition()
.
A forma padrão JS é chamar toString()
na função. Como assim:
function myFun() {}
myFun.toString() // gives "function myFun() {}",
// potentially with white space differences
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow