0

是否可以定义一个函数,然后将该函数的副本分配给不同的变量?

这基本上是我已经走了多远......

function add(x, y){
   return x + y;
}

var function1 = new add()
var function2 = new add()

这似乎不起作用,因为它每次都试图运行 add 函数。这同样适用于

var function1 = new function add()

我是否需要以某种方式使用原型,还是我以错误的方式看待它?

4

4 回答 4

5

这应该可以解决问题

var function1 = add;
var function2 = add;
于 2013-10-03T14:43:56.467 回答
3

您正在评估该功能。要将函数本身分配给变量,请使用

var function1 = add;
var function2 = add;

但是,尚不清楚为什么要复制该函数。

于 2013-10-03T14:43:45.623 回答
0

Javascript 中的函数和其他函数一样是对象。

您可以创建对同一函数的许多引用并将它们存储在例如数组中

function add(x, y) {
    return x + y;
}

var v = [add, add, add, add];

alert(v[3](33, 9)); // Will show 42

当您调用从对象成员查找中获取它的函数时,会发生唯一“神奇”的事情

x = {};
x.f = add;
x.f(12, 3);  // Returns 15

将发生的“奇怪”的事情是,this以这种方式调用的函数内部将是对象,而不是window直接调用函数时发生的全局对象。

这也意味着,令人困惑的是,

x.f(z);

不一样

[x.f][0](z);

或作为

var ff = x.f;
ff(z);

因为在第一种情况下this将是x,在第二种情况下this将是数组,而在第三种情况下它将是全局window对象。

于 2013-10-03T14:51:03.623 回答
0

如果您只是想创建对该函数的引用,只需进行此修改

function add(x, y){
  return x + y;
}

var function1 = add;
var function2 = add;

之后,您可以像这样调用函数。

function1(10,11);

function2(1,2);
于 2013-10-03T14:45:59.023 回答