将一个函数的副本分配给var

时间:2013-10-03 14:42:30

标签: javascript

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

这基本上是我有多远......

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

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

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

也是如此
var function1 = new function add()

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

4 个答案:

答案 0 :(得分:5)

这应该可以解决问题

var function1 = add;
var function2 = add;

答案 1 :(得分:3)

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

var function1 = add;
var function2 = add;

但是,为什么要复制该功能还不是很清楚。

答案 2 :(得分:0)

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

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

var function1 = add;
var function2 = add;

之后你可以调用这样的函数。

function1(10,11);

function2(1,2);

答案 3 :(得分: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对象