Есть ли способ в javascript, чтобы получить определение данной функции в виде строки, которая может быть изменена и исключена?
-
07-07-2019 - |
Вопрос
Я пытаюсь оценить функцию в новом контексте, то есть в той, которая содержит определенное определенное слово, которого нет в области. Это достаточно просто, если у меня есть определение функции как строки, но я хотел бы предоставить возможность сделать это с помощью обычного списка функций, например, так:
var funcs = {
first: function() { return 'yayaya'; },
second: function() { return 'okokok' + keyword; },
...
};
потом позже:
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;
}
Чего мне не хватает, так это функции Definition () или ее эквивалента, которая возвращает источник функции. Возможно ли это в JavaScript?
Решение
Это сработает, хотя я уверен, что есть более длинное и элегантное решение:
function foo() {
}
var bar = '' + foo; //type cast to a string by adding an empty string
alert(bar);
Другие советы
Попробуйте просто удалить .definition ()
.
Стандартный способ JS - вызвать функцию toString ()
. Вот так:
function myFun() {}
myFun.toString() // gives "function myFun() {}",
// potentially with white space differences
Не связан с StackOverflow