Есть ли способ в javascript, чтобы получить определение данной функции в виде строки, которая может быть изменена и исключена?

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

  •  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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top