从对象值

时间:2016-12-06 10:50:48

标签: javascript node.js ecmascript-6

我正在使用模拟器。手头的任务是某个端点上的传入请求。该请求可能包含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键在请求中找到匹配时触发方法(在其他文件中解耦)。是否有一种语义方式或详细的设计模式才能使其发挥作用?

1 个答案:

答案 0 :(得分:1)

问题是你已经自己解雇了这些方法。

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();
});