首页 > 解决方案 > 如何在 NodeJs 中在运行时动态创建和调用函数

问题描述

这就是我在运行时向窗口对象动态添加函数的方式:

(function (myPluginModuleLib, $, undefined) {
    myPluginModuleLib.myModuleMethod =  (varArgs) => {
        console.log('Dynamic Call :  ' + varArgs);
    };
}(window.myPluginModuleLib = window.myPluginModuleLib || {}, jQuery));  

然后我可以随时全局调用它:

window.myPluginModuleLib.myModuleMethod('HELLO WORLD PARAMS!');  

在NodeJs中是否有类似的方法可以做到这一点?我想在内存中添加一个函数。例如,在主app.js中,这样我就可以按需调用它,而不是总是从字符串构造它:

let myModuleMethodString = 'var myModuleMethod = (varArgs) => { console.log("Dynamic Call : " + varArgs) }';
myModuleMethodString = myModuleMethodString.slice(myModuleMethodString.indexOf("{") + 1, myModuleMethodString.lastIndexOf("}"));

let myModuleMethod = new Function("varArgs", 'console.log("Dynamic Call : " + varArgs)');

try {
    myModuleMethod('HELLO WORLD PARAMS!');
} catch (error) {
    console.log(error);
}

谢谢大家。

标签: javascriptnode.js

解决方案


如果您想继续使用此解决方案,则可以使用 Node JS 中的全局命名空间,类似于浏览器中的窗口,但不建议使用全局命名空间。

例子:

global.myPluginModuleLib = {
    myModuleMethod : (varArgs) => {
        console.log('Dynamic Call :  ' + varArgs);
    }
};
global.myPluginModuleLib.myModuleMethod('HELLO WORLD PARAMS!');  


推荐阅读