我有一个带有如下功能列表的文件
export function today() {}
export function yesterday() {}
export function tomorrow() {}
export function out(input) { input() }
input是函数的名称,它可以是tomorrow
,today
或yesterday
函数之一。
我只需要动态调用today
,yesterday
,tomorrow
函数。
答案 0 :(得分:1)
如前所述,您将必须创建一个地图,并使用该地图可以调用函数。
您可以尝试以下方法之一:
此方法的好处是您只有一个导出,因此您知道要导出的全部内容。但是,如果文件变大,则必须上下滚动以查看定义。另外,您正在无所事事,因此SELECT * FROM table
WHERE has_item_3 = 'True'
OR has_item_4 = 'True'
ORDER BY FIELD(has_item3, 'True') DESC, FIELD(has_item4, 'True') DESC, id
可以调用任何函数,因此单独导出它们毫无意义
out(...)
这是更可取的方法。在这里,您可以了解可能采取的行动。因此,您也在限制可能的输入。这还将使您能够为操作和功能使用更有意义的名称。缺点是必须维护一个列表。因此,对于每个新操作,您都必须更新此列表
function today() {}
function yesterday() {}
function tomorrow() {}
function out(input) {
module[input]();
}
var module = {
today, yesterday, tomorrow, out
}
export module;
答案 1 :(得分:0)
function func_abc() {
alert("abc");
}
function call_others(function_name) {
if (function_name == "abc") {
func_abc();
}
}
call_others("abc");
您可以执行此操作或使用switch语句
答案 2 :(得分:0)
function func_abc() {
alert("abc");
}
function call_others(function_name) {
if (function_name == "abc") {
func_abc();
}
}
call_others("abc");
您可以执行此操作或使用switch语句
还有一种方法是将此类函数存储在变量中,然后通过从模块对象属性访问它们来调用它们。示例:
var x = { };
x.f1 = function()
{
console.log('Call me as a string!');
}
现在,您可以使用字符串中的值来调用它:
var funcstr = "f1";
x[funcstr]();
答案 3 :(得分:0)
基本上,您有两个选择。使用地图进行查找或将引用的函数移至另一个文件,然后从那里导入通配符。 (基本相同)
1。通过查找
const lookup = {today, yesterday, tomorrow}
export function today() {}
export function yesterday() {}
export function tomorrow() {}
export function out(input) { lookup[input]() }
2。将您的代码分成两个文件。 index.js 和 fns.js
index.mjs
import * as lookup from './fns'
export function out(input) { lookup[input]() }
fns.mjs
export function today() {}
export function yesterday() {}
export function tomorrow() {}