Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有固定参数列表的分部函数应用程序的名称吗?_Javascript - Fatal编程技术网

Javascript 有固定参数列表的分部函数应用程序的名称吗?

Javascript 有固定参数列表的分部函数应用程序的名称吗?,javascript,Javascript,我试图找出使用部分函数应用程序/绑定是否有一个概念或现有的正式名称 我在多个地方/库中以不同的名称看到过它,但这里或多或少是我所谈论的与普通curry/bind/partial function应用程序相比的概念: //Typical usage of bind/curry: fn = bind(function(){console.log(this, arguments)}, context, 'arg 1', 'arg 2'); fn('arg 3'); //logs out arg 1,

我试图找出使用部分函数应用程序/绑定是否有一个概念或现有的正式名称

我在多个地方/库中以不同的名称看到过它,但这里或多或少是我所谈论的与普通curry/bind/partial function应用程序相比的概念:

//Typical usage of bind/curry:
fn = bind(function(){console.log(this, arguments)}, context, 'arg 1', 'arg 2');

fn('arg 3'); //logs out arg 1, arg 2, and arg 3

//What I'm looking for:
fn = makeFn(function(){console.log(this, arguments)}, context, 'arg 1', 'arg 2');

fn('arg 3'); //logs out arg 1, arg 2
// (Notice that arg 3 is ignored because it's not in the defined list of arguments).
类似于以下内容的示例用例:

obj = {
toggle: function(force, config){
node[force || this.hidden ? 'show' : 'hide'](config && config.someSetting);
this.hidden = !this.hidden;
},
hidden: false
}

node.on('click', makeFn(obj.toggle, obj, true));
使用bind/curry传递事件对象或发送的任何其他参数,但我们定义的函数将尝试选择性地将其用作完全不同类型的参数

我见过这种模式,称为不同库中的多个事物,它们的语法/功能略有不同

Facebook的js使用Function.prototype.shieldcontext,[args…],Mootools使用Function.prototype.passargs,[context],Sencha née ExtJS使用Function.prototype.createDelegatefn,args,[appendArgs=false],我甚至看到一些称为partialfn,context,但是,args通常具有传递占位符的附加功能,以允许传递不同的默认参数;我之所以避免这种情况,是因为每次函数调用时循环参数列表的性能开销

这是一个正式的概念,还是仅仅是一个需要一些新名称的隐含概念


提前感谢:

Imo它仍然是一个部分功能应用程序。但不是修复某些参数,而是修复所有参数,从而生成一个不接受任何其他参数的函数。来自Wikipedia:…部分函数应用程序指的是将多个参数固定到一个函数的过程,生成另一个较小算术数的函数。在你的例子中,你的函数基本上接受任意数量的参数,但是如果你有一个正确定义的函数function,b,它只对前两个参数进行操作,那么第三个参数就被忽略了。谢谢Felix,但是我不确定它是否适合的部分是在我描述的方法中,函数arity实际上可能更大。例如,如果只有2个定义的参数,但函数仍然通过参数[2]访问可选的第三个参数。既然它说生成的函数有一个较小的算术数,你怎么说它适用于这样的情况呢?可能是