我在os模块中有一个数组函数,我如何循环并执行每个函数。
var os = require("os");
var os_func_list = Object.keys(os);
os_func_list.forEach(function(element) {
// I know this is not working
// var func = "os." + element + "()";
// console.log(func);
}, this);
答案:
os_func_list.forEach(function(element) {
var func = os[element];
if (typeof func === 'function') { //verify that value is a function
console.log(func());
}
}, this);
答案 0 :(得分:2)
您可以使用[]
表示法动态访问对象的属性/函数:
var os = require("os");
var os_func_list = Object.keys(os);
os_func_list.forEach(function(element) {
var osValue = os[element];
if (typeof osValue === 'function') { //verify that value is a function
osValue();
}
});
如果您在调用期间需要使用特定的this
值(因为我注意到您将this
作为第二个参数传递给forEach
),您可以使用{{ 1}}。只需改变:
call
到
osValue();
答案 1 :(得分:-1)
一个非常危险的解决方案可能是使用eval()
函数:
var functionName = 'foo'
eval(functionName + '()')
我知道在网页上下文中,你可以使用window[functionName]()
但是因为你正在执行一个节点脚本,我不确定这个对象是否可用。