17 lines
584 B
JavaScript
17 lines
584 B
JavaScript
'use strict';
|
|
module.exports = function restParam(func, startIndex) {
|
|
startIndex = startIndex == null ? func.length - 1 : +startIndex;
|
|
return function() {
|
|
var length = Math.max(arguments.length - startIndex, 0);
|
|
var rest = new Array(length);
|
|
for (var index = 0; index < length; index++) {
|
|
rest[index] = arguments[index + startIndex];
|
|
}
|
|
switch (startIndex) {
|
|
case 0:
|
|
return func.call(this, rest);
|
|
case 1:
|
|
return func.call(this, arguments[0], rest);
|
|
}
|
|
};
|
|
};
|