偏函数
偏函数: 固定一个函数的一个或多个参数, 也就是将一个 n 元函数转换成一个 n - x 元函数
function isType(type, target) {
return `[object ${type}]` === Object.prototype.toString.call(target)
}
// 将上面函数改造为偏函数(将type参数固定)
// 闭包的一个应用
function isType(type) {
return function(target) {
return `[object ${type}]` === Object.prototype.toString.call(target)
}
}
const isArray = isType('Array') // 这里就是将type参数固定, 形成了一个更小元的函数
const isObject = isType('Object')
isArray([]) // true
isObject({}) // true
偏函数通用写法:
// presetArgs: 将要固定的参数
// laterArgs: 后面传进来的参数
function partial(fn, ...presetArgs) {
return function(...laterArgs) {
let allArgs = presetArgs.concat(laterArgs)
return fn(...allArgs)
}
}
function isType(type, target) {
return `[object ${type}]` === Object.prototype.toString.call(target)
}
const isArray = partial(isType, 'Array')
isArray([]) // true