_invoke.js 701 B

12345678910111213141516
  1. // fast apply, http://jsperf.lnkit.com/fast-apply/5
  2. module.exports = function (fn, args, that) {
  3. var un = that === undefined;
  4. switch (args.length) {
  5. case 0: return un ? fn()
  6. : fn.call(that);
  7. case 1: return un ? fn(args[0])
  8. : fn.call(that, args[0]);
  9. case 2: return un ? fn(args[0], args[1])
  10. : fn.call(that, args[0], args[1]);
  11. case 3: return un ? fn(args[0], args[1], args[2])
  12. : fn.call(that, args[0], args[1], args[2]);
  13. case 4: return un ? fn(args[0], args[1], args[2], args[3])
  14. : fn.call(that, args[0], args[1], args[2], args[3]);
  15. } return fn.apply(that, args);
  16. };