javascript - 为可以使用指定输入调用的对象创建通用函数

标签 javascript functional-programming ecmascript-6

我希望能够创建一系列 JSON 对象,如下所示:

const objects = {
  type1: {
    inputs: [value1, resultOfFunction(), value3],
    typeFunction: (arg1, arg2, arg3) => {
      //this does a thing with the inputs and returns an output
    }
  },
  type2: {
    inputs: [val1, val2],
    typeFunction: (arg1, arg2) => {
      //this does a thing with these inputs and returns an output
    }
  }
}

这里的要点是每个 type包含某种黑盒函数,它接受一系列参数并返回一个值。参数的数量因每种类型而异,这些参数的值也不同。我建议有一个数组 inputs它指定了要传递给每个函数的值,但我愿意接受替代方案。

然后我如何使用它们各自的输入来一般地调用这些函数?例如

type1.typeFunction() //obvs this doesn't work

最佳答案

How can I then generically call these functions with their respective inputs?

您可以指定输入,也许使用扩展符号:

type1.typeFunction(...type1.inputs);

...或者您在 type 上定义一个函数来执行此操作。

<小时/>

注意:在

inputs: [value1, resultOfFunction(), value3]

resultOfFunction 将在处理整个对象初始值设定项时调用,而不是稍后调用 type1.typeFunction 时。也许这就是您想要的,但我认为专门指出它是有用的。如果它不是您想要的,那么您必须将其放入一个函数中,这样直到/除非调用该函数才完成它。

关于javascript - 为可以使用指定输入调用的对象创建通用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41088019/

相关文章:

javascript - 人脸检测javascript/html5/flash

javascript - 如何通过 youtube api 获取所有观看过的视频

clojure - 函数式编程语言适合图形编程吗?

javascript - 迭代对象直到找到与标签匹配的值

javascript - 类型错误 : Cannot match against 'undefined' or 'null'

javascript - 如何在 azure-mobile-apps-js-client 中使用 substringof

javascript - 移动 safari 或 chrome 上的屏幕键盘打开时是否会触发任何 javascript 事件?

functional-programming - SICP 练习 2.19 - 如何扩展它?

java - 使用 functionjava HList,有没有办法将任意 HList 的每个元素传递给相应的柯里化(Currying)函数?

javascript通过映射根据另一个对象更新对象键/值