将函数名称和多个参数作为字符串传递

问题描述 投票:0回答:1

我有一个函数 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());

当函数有一个参数时它就可以工作。但不适用于多个参数。 有没有更好的方法来实现或者纠正它?

javascript arrays function
1个回答
0
投票

如果函数有多个参数,那么您可以使用 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);
}

© www.soinside.com 2019 - 2024. All rights reserved.