_.overArgs(func, [transforms=[_.identity]])
108
_.overArgs(func, [transforms=[_.identity]])
_.overArgs创建一个函数,这个函数的参数会被对应的transform方法处理
参数
func (Function): 需要被包裹的函数
[transforms=[_.identity]] (...(Function|Function[])): 参数转换函数组成的数组
返回值
(Function): 返回新的包裹好的函数
例子
function doubled(n) { return n * 2; } function square(n) { return n * n; } var func = _.overArgs(function(x, y) { return [x, y]; }, [square, doubled]); func(9, 3); // => [81, 6] func(10, 5); // => [100, 10]
源代码
/** * Creates a function that invokes `func` with its arguments transformed. * * @since 4.0.0 * @category Function * @param {Function} func The function to wrap. * @param {Function[]} [transforms=[identity]] * The argument transforms. * @returns {Function} Returns the new function. * @example * * function doubled(n) { * return n * 2 * } * * function square(n) { * return n * n * } * * const func = overArgs((x, y) => [x, y], [square, doubled]) * * func(9, 3) * // => [81, 6] * * func(10, 5) * // => [100, 10] */ //创建一个函数,这个函数的参数会被对应的transform方法处理 function overArgs(func, transforms) { const funcsLength = transforms.length//transforms方法长度 return function(...args) { let index = -1//循环索引 const length = Math.min(args.length, funcsLength)//参数长度和transforms长度中小的那一个 while (++index < length) {//循环较小者 args[index] = transforms[index].call(this, args[index])//用对应的transform处理参数 } return func.apply(this, args)//将处理好的参数传递给func,apply调用后返回结果 } } export default overArgs

浙公网安备 33010602011771号