code: function baseBind(data) {
        var func = data[0],
            thisArg = data[3],
            partialArgs = data[4],
            partialHolders = data[6];
  
        function bound() {
          // `Function#bind` spec
          // http://es5.github.io/#x15.3.4.5
          if (partialArgs) {
            // avoid `arguments` object deoptimizations by using `slice` instead
            // of `Array.prototype.slice.call` and not assigning `arguments` to a
            // variable as a ternary expression
            var args = composeArgs(partialArgs, partialHolders, arguments);
          }
          // mimic the constructor's `return` behavior
          // http://es5.github.io/#x13.2.2
          if (this instanceof bound) {
            // ensure `new bound` is an instance of `func`
            var thisBinding = baseCreate(func.prototype),
                result = func.apply(thisBinding, args || arguments);
            return isObject(result) ? result : thisBinding;
          }
          return func.apply(thisArg, args || arguments);
        }
        setData(bound, data);
        return bound;
      }
docs: /*-------------------------------------------------------------------------- 
  The base implementation of `_.bind` that creates the bound function and
  sets its meta data.
  
  @private
  @param {Array} data The metadata array.
  @returns {Function} Returns the new bound function.