功能合并功能合并主要用于创建已经设置了一个或多个参数的功能。基本方法和函数绑定一样:返回一个带有所需包的函数。 两者的区别在于,调用函数时,返回的函数还需要设置少量传入参数function curry(fn){ varargs = array . prototype . slice . call(arguments,1);return function(){ var innerArgs = array . prototype . slice . call(arguments);var filalArgs = args . concat(inner args);Fn。apply (null,filalargs)} } CUURY()的第一个参数是要相关的函数,其他参数是要传入的值。为了获得第一个参数之后的所有参数,在arguments对象上使用了slice()方法,传入的参数1表示返回的数组包含第二个参数的所有参数。 然后args数组包含来自外部函数的参数。 在内部函数中,创建innerArgs数组来存储所有传入的参数。 一旦存储了来自外部和内部函数的参数数组,就可以使用concat()方法将它们组合成finalArgs,然后将结果传递给函数function add (num1,num 2){ return num 1+num 2;}var curriedAdd=curry(add,5);Alert(curriedAdd(3))创建了Add()的coriolis版本,其参数绑定为5。 当使用curriedAdd()并传入3时,3将成为Add()的第二个参数,而第一个参数是5,最后的结果是8ecma5的bind方法也实现了函数coritization,所以可以是var handler={message:>xxxx:,handleclick:function(name,event){alert(this。Message,event . type);} } BTN . addevent listener(≥点击“是”。,handler . handle click . bind(handler,我的按钮:))用curry()还是bind()取决于你是否需要Object对象的响应。两者都可以用来创建复杂的算法和函数,当然会带来额外的开销。