js中函数柯里化

今天,我们记录一下js中的函数柯里化,对于小白,接触到柯里化这三个字,内心很崩溃,其实只是一个比较高深的名字,函数柯里化说人话就是:使用一个闭包返回一个函数(这里默认大家知道什么叫做闭包),函数需要设置一些传入的参数。
下面是一段函数柯里化的代码:

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); 
	 }; 
}

curry()函数的主要工作就是将被返回函数的参数进行排序。curry()的第一个参数是要进行柯里 化的函数,其他参数是要传入的值。这个函数并没有考虑到执行环 境,所以调用 apply()时第一个参数是 null。

ECMAScript 5的 bind()方法也实现函数柯里化,只要在 this 的值之后再传入另一个参数即可

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", handler.handleClick.bind(handler, "my-btn"));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值