获取nodejs函数定义

时间:2014-01-11 15:52:17

标签: javascript node.js

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

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

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

1 个答案:

答案 0 :(得分:4)

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

  

也就是说,toString反编译该函数,返回的字符串包括函数关键字,参数列表,花括号和函数体的源。

例如,假设您在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()来获取函数代码以了解函数参数的名称。请参阅this relevant SO answer