手寫(xiě)一個(gè)實(shí)現(xiàn)柯里化的.bind()
柯里化:《函數(shù)柯里化小結(jié)》
柯里化:前端開(kāi)發(fā)者進(jìn)階之函數(shù)柯里化Currying
bind():Javascript中bind()方法的使用與實(shí)現(xiàn)
函數(shù)柯里化(個(gè)人理解):一個(gè)函數(shù)只接收單個(gè)參數(shù),但是函數(shù)層層嵌套并return购披,可實(shí)現(xiàn)預(yù)設(shè)參數(shù)(參數(shù)復(fù)用)锈津、提前返回(理解不是很透徹)榴都、延遲執(zhí)行(ES5的bind())。
// 實(shí)現(xiàn)一個(gè)函數(shù)柯里化的原生bind方法
Function.prototype._bind = function (context) {
let self = this;
let firstArg = Array.prototype.slice.call(arguments,1);
return function () {
let secArg = Array.prototype.slice.call(arguments);
let finishArg = firstArg.concat(secArg);
return self.apply(context,finishArg);
}
}