我有一个函数 id、名称和参数的对象。
我想用一个id来调用该对象,它将通过其字符串名称执行相应的函数并传递关联的数组参数。
var funcList = {
"0abc1": {
fn: "myFunc1",
args: ["red", "green"]
},
"1def2": {
fn: "myFunc2",
args: ["blue"]
}
};
const func = funcList["0abc1"];
const funcName = func.fn;
const funcParams = func.args;
window[funcName](funcParams.toString());
当函数有一个参数时它就可以工作。但不适用于多个参数。 有没有更好的方法来实现或者纠正它?
如果函数有多个参数,那么您可以使用 Spread 语法 将数组实体单独传递给函数,而不是作为单个字符串:
var funcList = {
"0abc1": {
fn: "myFunc1",
args: ["red", "green"]
}
}
const func = funcList["0abc1"];
const funcName = func.fn;
const funcParams = func.args;
window[funcName](...funcParams);
function myFunc1(color1, color2) {
console.log(color1);
console.log(color2);
}