_apply.js 714 B

12345678910111213141516171819202122
  1. /**
  2. * A faster alternative to `Function#apply`, this function invokes `func`
  3. * with the `this` binding of `thisArg` and the arguments of `args`.
  4. *
  5. * @private
  6. * @param {Function} func The function to invoke.
  7. * @param {*} thisArg The `this` binding of `func`.
  8. * @param {Array} args The arguments to invoke `func` with.
  9. * @returns {*} Returns the result of `func`.
  10. */
  11. function apply(func, thisArg, args) {
  12. switch (args.length) {
  13. case 0: return func.call(thisArg);
  14. case 1: return func.call(thisArg, args[0]);
  15. case 2: return func.call(thisArg, args[0], args[1]);
  16. case 3: return func.call(thisArg, args[0], args[1], args[2]);
  17. }
  18. return func.apply(thisArg, args);
  19. }
  20. module.exports = apply;