Existe uma maneira em javascript para obter a definição de uma dada função como uma string, a ser possivelmente modificado e evaled?

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

  •  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?

Foi útil?

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
scroll top