有没有办法在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