我很好奇这是否可以在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(); }
}
}
最佳答案
是的,这是可能的。不,我不会评论这种方法的(感知)价值。
这是一个快速示例:
window.addEventListener('load', mInit, false);
function createFunction(funcName, message)
{
var script = document.createElement('script');
var scriptContents = 'function ' + funcName + '()\n';
scriptContents += '{\n\talert("' + message + '");\n}\n';
script.appendChild( newTxt(scriptContents) );
document.head.appendChild(script);
}
function mInit()
{
createFunction('myFunc', 'hello world');
myFunc();
}
输出:
<script>function myFunc()
{
alert("hello world");
}
</script>
我不确定该功能是否可以立即工作,因此无法进行上述测试。 (确实如此)
过去我有一个想法,涉及在图像的Alpha通道中隐藏脚本...
关于javascript - 建立内容不同的函数的工厂?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18476591/