0

我试图在一个新的上下文中评估一个函数,即一个包含某个定义的单词但在范围内不存在的函数。如果我将函数定义为字符串,这很容易,但我想提供使用常规函数列表执行此操作的能力,如下所示:

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

我缺少的是定义()函数或等效函数,它返回函数的源。这在javascript中可能吗?

4

3 回答 3

2

尝试简单地取出.definition().

于 2009-09-16T03:32:23.773 回答
2

JS 标准方式是调用toString()函数。像这样:

function myFun() {}

myFun.toString() // gives "function myFun() {}",
                 // potentially with white space differences
于 2009-09-16T06:13:42.903 回答
1

这将起作用,尽管我确信有一个更长、更优雅的解决方案:

function foo() {
}
var bar = '' + foo; //type cast to a string by adding an empty string
alert(bar);
于 2009-09-16T03:41:52.087 回答