我很好奇这在 JavaScript 中是否可行。
我想要一个可以返回实际内容不同的函数的工厂函数。说这是我们的工厂:
function makeFunction(a, b, c) {
// Implement me
return f;
}
我希望它像这样工作:
> makeFunction(true, true, false);
=> function() { do_a(); do_b(); }
> makeFunction(false, true, false);
=> function() { do_b(); }
> makeFunction(true, false, true);
=> function() { do_a(); do_c(); }
撇开这是否是一个好主意不谈……我可以这样做吗?如果是这样,内部需要发生makeFunction
什么?
奖励:一般来说,这种模式叫什么?
编辑:我应该澄清一些我不想要的东西:使用闭包的理智方法。例如,以下具有正确的效果,但不会改变函数内容/主体:
function makeFunction(a, b, c) {
return function() {
if (a) { do_a(); }
if (b) { do_b(); }
if (c) { do_c(); }
}
}