gpt4 book ai didi

javascript - 获取 nodejs 函数定义

转载 作者:行者123 更新时间:2023-11-30 10:22:15 24 4
gpt4 key购买 nike

我想从 js 文件中收集已定义函数的源代码。函数可能很复杂并且有很多左括号和右括号,因此使用正则表达式会很困难。我只需要稍后在代码中调用的函数,如下所示

function dump_vars() {
Object.keys(global).forEach(function (key) {
console.log(key);
console.log(global[key]);
});
}

有没有办法从 node.js 中获取函数定义?它们是否可能像全局对象一样保存在某个地方?

最佳答案

如果您有权访问函数对象,则可以使用 .toString() 方法获取其定义。每Mozilla's documentation :

That is, toString decompiles the function, and the string returned includes the function keyword, the argument list, curly braces, and the source of the function body.

例如,假设您在 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 实现依赖注入(inject)的方式,通过使用 .toString() 获取函数代码以了解函数参数的名称.参见 this relevant SO answer .

关于javascript - 获取 nodejs 函数定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21064364/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com