function curry(fn){ var args = Array.prototype.slice.call(arguments, 1); return function(){ var innerArgs = Array.prototype.slice.call(arguments); var finalArgs = args.concat(innerArgs); return fn.apply(null, finalArgs); }; }
Demo
function add(num1, num2){ return num1 + num2; } var curriedAdd = curry(add, 5); alert(curriedAdd(3)); //8
function add(num1, num2){ return num1 + num2; } var curriedAdd = curry(add, 5, 12); alert(curriedAdd()); //17
函数柯里化还常常作为函数绑定的一部分包含在其中,构造出更为复杂的 bind()函数。例如:
function bind(fn, context){ var args = Array.prototype.slice.call(arguments, 2); return function(){ var innerArgs = Array.prototype.slice.call(arguments); var finalArgs = args.concat(innerArgs); return fn.apply(context, finalArgs); }; }
var handler = { message: "Event handled", handleClick: function(name, event){ alert(this.message + ":"+ name + ":"+ event.type); } }; var btn = document.getElementById("my-btn"); EventUtil.addHandler(btn, "click", bind(handler.handleClick, handler, "my-btn"));
相关推荐
苹果在Swift Language Guide没有添加任何关于柯里化函数的信息,只在Swift Language Reference对它简单描述了一下。这对于一个强大而有用的特性来说是很遗憾的,它值得获得更多人关注。本文将试图覆盖柯里化函数的...
javascript中利用柯里化函数实现bind方法_.docx
• 柯里化函数主要起到预处理的作用; • bind方法的作用:把传递进来的callback回调方法中的this预先处理为上下文context; /** * bind方法实现原理1 * @param callback [Function] 回调函数 * @param context ...
js代码-实现一柯里化函数
怎样用Javascript实现函数柯里化与反柯里化 函数柯里化(黑人问号脸)???Currying(黑人问号脸)???妥妥的中式翻译既视感;下面来一起看看究竟什么是函数柯里化: 维基百科的解释是:把接收多个参数的函数...
主要为大家详细介绍了javascript中利用柯里化函数实现bind方法,感兴趣的小伙伴们可以参考一下
php代码-柯里化函数的使用
什么是柯里化 柯里化是这样的一个转换过程,把接受多个参数的...柯里化函数主要起到预处理的作用; bind方法的作用:把传递进来的callback回调方法中的this预先处理为上下文context; bind方法实现原理1代码如下所示:
js代码-柯里化函数
主要介绍了JavaScript函数柯里化原理与用法,分析了函数柯里化的概念、原理、功能并结合实例形式给出了柯里化函数的具体使用技巧,需要的朋友可以参考下
js代码-函数柯里化通用封装
字符串前置 独角兽 String.prototype.prepend 作为柯里化函数。 $ npm install string-prepend --saveAPI 示例和灵感要求 var prepend = require('./');相当于 str1 + str2 prepend("http://", "example.com");//=> ...
柯里化(Currying):柯里化是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术 通俗的讲:柯里化是一种将使用多个参数的一个函数转换成...
柯里化(Currying)指的是将原来接受两个参数的函数变成新的接受一个参数的函数的过程。...add(1)(2) 实际上是依次调用两个普通函数(非柯里化函数),第一次调用使用一个参数 x,返回一个函数类型的值,第二次