JavaScript 允许你
- 以字符串形式获取函数的代码
- 通过提供带有代码的字符串来创建新函数
每个对象都有一个toString()
方法。对于函数,它返回它们的代码(除非被覆盖)。
cool.lol.toString();
返回function() { // contents here }
。
让我们从这个字符串中提取函数的主体。它紧随其后{
,包括除最后一个之外的所有内容}
。
var code = cool.lol.toString();
var body = code.substring(code.indexOf('{') + 1, code.length - 1);
然后我们添加更多的东西
var newBody = body + '// i would like to add my own stuff here!!!';
Function
并使用构造函数创建一个新函数。
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function
cool.lol = new Function(newBody);
当然,如果新函数还必须保留参数(您必须从函数代码中解析出它们,然后将它们作为参数提供给Function
构造函数),则还有更多工作要做。为简单起见,在这种情况下,我假设该函数没有参数。
一个示例实现:
http://jsfiddle.net/QA9Zx/