optimizeCb.js 682 B

1234567891011121314151617181920212223
  1. var isUndef = require('./isUndef');
  2. exports = function(fn, ctx, argCount) {
  3. if (isUndef(ctx)) return fn;
  4. switch (argCount == null ? 3 : argCount) {
  5. case 1:
  6. return function(val) {
  7. return fn.call(ctx, val);
  8. };
  9. case 3:
  10. return function(val, idx, collection) {
  11. return fn.call(ctx, val, idx, collection);
  12. };
  13. case 4:
  14. return function(accumulator, val, idx, collection) {
  15. return fn.call(ctx, accumulator, val, idx, collection);
  16. };
  17. }
  18. return function() {
  19. return fn.apply(ctx, arguments);
  20. };
  21. };
  22. module.exports = exports;