Javascript 获取nodejs函数定义
我想从js文件中收集已定义函数的源代码。这些函数可能很复杂,并且有许多开始和结束括号,因此使用正则表达式将很困难。我只需要稍后在代码中可以调用的函数,如下所示Javascript 获取nodejs函数定义,javascript,node.js,Javascript,Node.js,我想从js文件中收集已定义函数的源代码。这些函数可能很复杂,并且有许多开始和结束括号,因此使用正则表达式将很困难。我只需要稍后在代码中可以调用的函数,如下所示 function dump_vars() { Object.keys(global).forEach(function (key) { console.log(key); console.log(global[key]); }); } 有没有办法从node.js中获取函数定义?它们是否保存
function dump_vars() {
Object.keys(global).forEach(function (key) {
console.log(key);
console.log(global[key]);
});
}
有没有办法从node.js中获取函数定义?它们是否保存在全局对象的某个位置?如果您可以访问函数对象,则可以使用
.toString()
方法获取其定义。Per:
也就是说,toString反编译函数,返回的字符串包括函数关键字、参数列表、花括号和函数体的源
例如,假设您在mymodule.js
中定义了一个模块:
function add (a, b) {
return a + b;
};
function mul (a, b) {
return a * b;
};
module.exports = {
a: add,
b: mul
};
var mymodule = require('./mymodule.js')
Object.keys(mymodule).forEach(function (fun) {
console.log(mymodule[fun].toString());
})
然后,在index.js
中:
function add (a, b) {
return a + b;
};
function mul (a, b) {
return a * b;
};
module.exports = {
a: add,
b: mul
};
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()
获取函数代码以了解函数参数的名称来实现依赖项注入的。请参阅。我不知道函数名,代码不是我的,所以我会使用正则表达式获取函数名,然后在它们上运行toString方法?这是个好主意。我会让你知道结果是什么:)不,我的意思是你可以在任何函数对象上运行.toString()
,比如你导入模块时得到的函数(我想这就是你说“只需要以后在代码中调用的函数”时想要做的事情)我不能确定模块的其余语法是否正确。您想处理源文件还是处理require()
调用的结果?你的问题还不清楚。我想这是一个源文件,代码不必运行,它可能包括可能要执行此操作的代码,而不仅仅是函数定义。这很复杂,您在每个函数名上运行toString的想法应该是可行的,thnx。我认为你的答案是正确的。