偏函数:是指创建一个调用另一个部分----参数或变量已经预置的函数----的函数。(这是啥意思?)
// 例一
const toString = Object.prototype.toString;
const isString = function (obj) {
return toString.call(obj) == '[object String]';
};
const isFunction = function (obj) {
return toString.call(obj) == '[object Function]';
};
// 偏函数
const isType = function (type) {
return function (obj) {
return toString.call(obj) == '[object ' + type + ']';
};
};
const isString = isType('String');
const isFunction = isType('Function');
// 这种通过指定部分参数来产生一个新的定制函数的形式就是偏函数
// 例二
let count = 0
const results = {}
const done = function (key,value) {
results[key] = value
count ++ // 哨兵变量
if(count === 3) {
render(results)
}
}
done ('template',template)
done ('data',data)
done ('resources',resources)
// 偏函数方案
const after = function (times,callback) {
let count = 0,results = {};
return function (key,value) {
results[key] = value
count ++
if(count === times) {
callback(results)
}
}
}
const done = after (time,render)