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

Javascript 如何使用函数及其值作为参数?,javascript,Javascript,我希望一个对象调用另一个对象或JSON(作为字符串或引用)中定义的函数,并在其中定义可变数量的值 下面是一个伪代码示例,说明了我要做的事情: // function name and variable-length values definition const definition = { functionName: "function1", values: [ 1, "foo", 3.14 ] } // objectA calling the

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

下面是一个伪代码示例,说明了我要做的事情:

// 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
may/should?引用成员变量中的定义

如何才能做到这一点


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

您需要两种机制

首先使用方括号表示法访问对象属性:

objectA[definition.functionName]; // this will return the function you want
// This is the same as objectA.function1
其次,要将数组作为参数列表传递。为此,您可以使用期望参数列表为数组形式的参数:

objectA[definition.functionName].apply(objectA, definition.values);
// This is the same as objectA.function1(1, "foo", 3.14);
要使用的字符串:

const fx1=Function(definition.functionString)
const fx2=objectA[definition.functionName]
有几种方法可以调用fx,具体取决于fx如何处理参数

fx.apply(null,definition.values)
fx(…定义.值)
fx(定义值)
如果您有函数及其参数值的对象(即字典),只需访问字典中的匹配值即可获得函数。
然后,为了使用其参数,可以使用spread运算符:

const字典={
函数1:{//例如
定义:(a,b,c)=>`{a:${a},b:${b},c:${c}`,
数值:[1,“foo”,3.14],
},
};
函数调用FunctionByName(名称){
const currFunction=字典[名称];
常量{定义,值}=函数;
返回定义(…值);
}
log(callFunctionByName('function1')
//第二种方法,如果功能1不是objA的键

function function1(first, sec, third) {
  
    console.log(first);
    console.log(sec);
    console.log(third);
  
}
const definition = {
  functionName: "function1",
  values: [ 1, "foo", 3.14 ]
}
eval(`${definition.functionName}(${definition.values[0]}, "${definition.values[1]}", ${definition.values[2]})`);

一切皆有可能,但我不明白你的问题?什么是
objectA.function1(1,“foo”,3.14)对象A在哪里?
function function1(first, sec, third) {
  
    console.log(first);
    console.log(sec);
    console.log(third);
  
}
const definition = {
  functionName: "function1",
  values: [ 1, "foo", 3.14 ]
}
eval(`${definition.functionName}(${definition.values[0]}, "${definition.values[1]}", ${definition.values[2]})`);