Gibt es eine Möglichkeit in Javascript, um die Definition einer bestimmten Funktion als String zu erhalten, wird möglicherweise geändert und EVALED?

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

  •  07-07-2019
  •  | 
  •  

Frage

Ich versuche, eine Funktion in einem neuen Kontext zu bewerten, das heißt, eine, die ein bestimmtes Wort enthält definiert, die in dem Anwendungsbereich nicht existiert. Es ist leicht genug, wenn ich die Definition der Funktion als String, aber ich mag die Möglichkeit geben, diese mit einer regelmäßigen Liste der Funktionen zu tun, etwa so:

var funcs = {
  first: function() { return 'yayaya'; },
  second: function() { return 'okokok' + keyword; },
  ...
};

dann später:

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;
}

Was mir fehlt, ist die Definition () Funktion oder gleichwertig, die die Quelle der Funktion zurückgibt. Ist dies möglich, in Javascript?

War es hilfreich?

Lösung

Dies funktioniert, obwohl ich sicher bin, gibt es eine längere, elegantere Lösung:

function foo() {
}
var bar = '' + foo; //type cast to a string by adding an empty string
alert(bar);

Andere Tipps

Versuchen Sie einfach die .definition() herausnehmen.

Der JS Standardmethode ist toString() auf die Funktion aufzurufen. Wie so:

function myFun() {}

myFun.toString() // gives "function myFun() {}",
                 // potentially with white space differences
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top