函数柯里化

柯里化函数的目的:把多个参数拆开成多个函数,一个函数只有一个参数,使用闭包返回一个函数。

创建一个柯里化函数的通用方式

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);//将所有参数返回给执行环境
	}
}
function add(a,b){
	return a+b;
}
var currieAdd=curry(add,7);
alert(currieAdd(3));//10

用柯里化实现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);//将所有参数返回给执行环境
	}
}
const obj1={
	var A=function(str1,str2){
	return str1+str2+this.name
}
const obj2={
	name="帅小卓"
}
const say=obj1.A.bind(obj2,'呼呼','噜噜')
console.log(say)//呼呼噜噜帅小卓
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值