function bind(func, thisArg) {
      var bitmask = BIND_FLAG;
      if (arguments.length > 2) {
        var partials = slice(arguments, 2),
            holders = replaceHolders(partials, bind.placeholder);

        bitmask |= PARTIAL_FLAG;
      }
      return createWrapper(func, bitmask, thisArg, partials, holders);
    }
Creates a function that invokes `func` with the `this` binding of `thisArg`
and prepends any additional `bind` arguments to those provided to the bound
function.

**Note:** Unlike native `Function#bind` this method does not set the `length`
property of bound functions.

@static
@memberOf _
@category Function
@param {Function} func The function to bind.
@param {*} [thisArg] The `this` binding of `func`.
@param {...*} [args] The arguments to be partially applied.
@returns {Function} Returns the new bound function.
@example

var func = function(greeting) {
  return greeting + ' ' + this.user;
};

func = _.bind(func, { 'user': 'fred' }, 'hi');
func();
// => 'hi fred'