gpt4 book ai didi

javascript - 从对象值调用 JS 方法

转载 作者:行者123 更新时间:2023-12-03 05:29:49 25 4
gpt4 key购买 nike

我正在开发模拟器。手头的任务是某个端点上的传入请求。该请求可以在 req.body.options 中包含 1-4 个选项。基本设计思想是一个对象包含选项和相应的方法调用(作为某种子路由器)。

let dataActions = {
option1: optionMethod(param1, param2),
option2: optionMethod2(param1, param2),
option3: optionMethod3(params),
option4: optionMethod4(params)
}

for (key in req.body.options) {
...
}

当 for...in 发现请求与 dataActions 键匹配时,应该触发方法(在其他文件中解耦)。是否有语义方法或详细的设计模式来完成这项工作?

最佳答案

问题是您已经自己触发了这些方法。

let dataActions = {
option1: optionMethod(param1, param2) // <-- this is a function call
}

通过这种方式,您可以将 optionMethod()结果分配给 option1。上面是

的有效简写
let dataActions = {};
dataActions.option1 = optionMethod(param1, param2);

如果这有助于使其更加明显。

<小时/>

您不想立即调用这些方法。您想存储它们以供以后使用。要么直接存储它们:

let dataActions = {
option1: optionMethod // <-- this is a function reference
}

...或存储以某种特定方式调用它们的函数:

let dataActions = {
option1: function () {
return optionMethod('some', 'parameters');
}
}

现在您可以在单独的时间使用它们,例如像这样

Object.keys(dataActions).filter(a => a in req.body.options).forEach(a => {
var optionMethod = dataActions[a];
optionMethod();
});

关于javascript - 从对象值调用 JS 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40993530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com