是否可以定义一个函数,然后将该函数的副本分配给不同的变量?
这基本上是我已经走了多远......
function add(x, y){
return x + y;
}
var function1 = new add()
var function2 = new add()
这似乎不起作用,因为它每次都试图运行 add 函数。这同样适用于
var function1 = new function add()
我是否需要以某种方式使用原型,还是我以错误的方式看待它?
是否可以定义一个函数,然后将该函数的副本分配给不同的变量?
这基本上是我已经走了多远......
function add(x, y){
return x + y;
}
var function1 = new add()
var function2 = new add()
这似乎不起作用,因为它每次都试图运行 add 函数。这同样适用于
var function1 = new function add()
我是否需要以某种方式使用原型,还是我以错误的方式看待它?
这应该可以解决问题
var function1 = add;
var function2 = add;
您正在评估该功能。要将函数本身分配给变量,请使用
var function1 = add;
var function2 = add;
但是,尚不清楚为什么要复制该函数。
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
对象。
如果您只是想创建对该函数的引用,只需进行此修改
function add(x, y){
return x + y;
}
var function1 = add;
var function2 = add;
之后,您可以像这样调用函数。
function1(10,11);
function2(1,2);