time-to-botec

Benchmark sampling in different programming languages
Log | Files | Refs | README

_apply.js (714B)


      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 
     21 module.exports = apply;