首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用函数及其值作为参数?

如何使用函数及其值作为参数?
EN

Stack Overflow用户
提问于 2021-01-21 06:57:20
回答 4查看 44关注 0票数 0

我希望一个对象调用在另一个对象或JSON中定义的函数(作为字符串或引用),其中也定义了一个可变的值。

下面是我要做的一个伪代码示例:

代码语言:javascript
复制
// function name and variable-length values definition
const definition = {
  functionName: "function1",
  values: [ 1, "foo", 3.14 ]
}

// objectA calling the function with the values
// objectA.definedFunction(definedValues);
// objectA.[functionName]([val1], [val2], ..., [valN]);
objectA.function1(1, "foo", 3.14);

注:objectA可能/应该?引用成员变量中的定义。

如何才能做到这一点?

是否可以将其扩展为function1是在definition中也定义的另一个对象的成员函数?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2021-01-21 07:05:32

你需要两种机制。

首先,使用方括号符号访问对象属性:

代码语言:javascript
复制
objectA[definition.functionName]; // this will return the function you want
// This is the same as objectA.function1

第二,您希望将数组作为参数列表传递。为此,您可以使用Function.prototype.apply,它期望数组形式的参数列表:

代码语言:javascript
复制
objectA[definition.functionName].apply(objectA, definition.values);
// This is the same as objectA.function1(1, "foo", 3.14);
票数 1
EN

Stack Overflow用户

发布于 2021-01-21 07:08:56

string to function:函数

代码语言:javascript
复制
const fx1 = Function(definition.functionString)
const fx2 = objectA[definition.functionName]

有一种调用fx的方法,取决于fx处理参数的大小。

代码语言:javascript
复制
fx.apply(null, definition.values)
fx(...definition.values)
fx(definition.values)
票数 0
EN

Stack Overflow用户

发布于 2021-01-21 07:14:04

如果您有一个函数及其参数值的对象(即字典),则只需访问字典中的匹配值即可获得该函数。

然后,为了使用它的参数,可以使用spread运算符:

代码语言:javascript
复制
const dictionary = {
  function1: { // For example
    definition: (a, b, c) => `{ a: ${a}, b: ${b}, c: ${c} }`,
    values: [1, "foo", 3.14],
  },
};

function callFunctionByName(name) {
  const currFunction = dictionary[name];
  const { definition, values } = currFunction;
  return definition(...values);
}


console.log(callFunctionByName('function1'));

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65822455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档