带有JavaScript中数组模板的functionFactory

带有JavaScript中数组模板的functionFactory,javascript,Javascript,这是一个关于JavaScript的棘手问题 例如,我们有一个函数,如下所示: var f1 = function(a,b) { return a + b; }; 现在,我希望这个(或另一个)函数由工厂函数生成,带有数组中描述的模板,如下所示: var fCode = [a, b, a+b]; var functionFactory = function(fCode) { //........ return f; }; var f1 = functionFacto

这是一个关于JavaScript的棘手问题

例如,我们有一个函数,如下所示:

var f1 = function(a,b)
{
    return a + b;
};
现在,我希望这个(或另一个)函数由工厂函数生成,带有数组中描述的模板,如下所示:

var fCode = [a, b, a+b];

var functionFactory = function(fCode)
{
     //........
     return f;
};

var f1 = functionFactory(fCode);
我知道
functionFactory
因此是一种闭包形式,我的问题不是这一点

我尝试过对象包装器等,但到目前为止还没有找到一个干净的实现


有什么想法吗?谢谢。

我能看到的实现我认为您要求的目标的唯一方法是使用内置构造函数

您可以通过传入参数名和函数体来创建新函数,如下所示:

var f1 = new Function("a", "b", "return a+b;");

f1(2,2); // 4
如果将其与内置方法相结合,则可以将数组用作某种“模板”


到的第一个参数是调用该函数时绑定到此指针的内容。如果不定义它,它将是全局对象。

当你说数组中定义的模板时,你的确切意思是什么?上面的代码毫无意义,除非它们是数组中的字符串。哎呀,我认为这两个代码之间的关系是如此明显,没想到会有人看不到。嗯。。。你可以坐在这里斥责那些你正在寻求帮助的人,或者你可以试着解释你真正想要的是什么。很抱歉,我在这里遇到了这么多没有效率的人。你的回答对我帮助很大。非常感谢。我尝试实现了引用您的答案,代码运行得非常好!感谢@Josh.PS。为了将来参考,您答案中的第一个代码有
错误:函数构造函数是eval的一种形式(严格模式)。但第二种方法的效果与预期一致。
var template = ["a", "b", "return a+b;"];

var f1 = Function.apply(undefined, template);

f1(2,2); // 4