繁体   English   中英

使用设置的参数将已定义的函数分配给变量

[英]Assign an already-defined function to a variable with set arguments

我想要与该代码等效的东西,除了我不希望在定义my_var时调用my_func。 我想稍后在代码中调用my_var()并保留原始参数(“被叫!”)。

function my_func(first_arg) {
alert(first_arg);
};
var my_var = my_func('called!');

怎么样?

变量初始化后将调用您的函数(然后变量将保留函数的输出 ,这不是您想要的)。 为什么不制作另一个函数来返回函数的输出呢?

我不善于解释事物,因此下面是一些代码:

var my_var = function() { return my_func('called!'); };

实现此目的的直接方法是使用无参数匿名函数包装对函数的调用:

var my_var = new function() {
    my_func('called!');
}

ECMAScript 5th Edition引入了Function.bind方法,该方法实现了部分应用程序(或更具体地说,是currying ),您可以通过以下方式编写该方法:

var my_var = my_func.bind(undefined, 'called!');

(存在undefined位置,因为bind()的第一个参数bind()值绑定this “参数”。)

Function.bind()是相对较新的,尚未广泛实现。 Mozilla文档包含一个简单的填充程序,您可以使用它来获取大部分功能。 John Resig也有一篇博客文章,其中介绍了部分应用程序的不同实现。 它也可能在许多JS库之一中提供。

您可能正在寻找类似于Function.prototype.bind东西,它允许您将带有参数的函数绑定到特定上下文。 基本上,它允许您执行以下操作:

function myFunc(firstArg, secondArg) {
    alert(firstArg + secondArg);
};

var myVar = myFunc.bind(null, 'called!');

myVar(' - from myVar!');
// result is alert with -> "called! - from myVar"

它不在较旧的浏览器中,但是上面的链接具有兼容性实现,使其可以在特定情况下使用。

新增功能!

function my_func(first_arg) {
    alert(first_arg);
};
var my_var = function() {
    my_func('called!');
}

只需要函数返回一个函数:

function my_func(first_arg) {
  return function(){alert(first_arg);}
};
var my_var = my_func('called!');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM