我想从js文件中收集已定义函数的源代码。这些功能可能很复杂,并且具有许多打开和关闭括号,因此使用正则表达式将很困难。我只需要稍后在代码中可调用的函数,如下所示
function dump_vars() {
Object.keys(global).forEach(function (key) {
console.log(key);
console.log(global[key]);
});
}
有没有办法从node.js中获取函数定义?它们是否可能像全局对象一样保存在某个地方?
如果可以访问函数对象,则可以使用.toString()
方法获得其定义。根据Mozilla的文档:
即,toString反编译该函数,并且返回的字符串包括function关键字,参数列表,花括号和函数主体的源。
例如,假设您在中定义了一个模块mymodule.js
:
function add (a, b) {
return a + b;
};
function mul (a, b) {
return a * b;
};
module.exports = {
a: add,
b: mul
};
然后,在index.js
:
var mymodule = require('./mymodule.js')
Object.keys(mymodule).forEach(function (fun) {
console.log(mymodule[fun].toString());
})
这将输出:
$ node index.js
function add(a, b) {
return a + b;
}
function mul(a, b) {
return a * b;
}
编辑:例如,这是AngularJS通过.toString()
获取函数代码以知道函数参数名称的方式来实现依赖项注入的方法。看到这个相关的答案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句