| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 | var baseRest = require('./_baseRest'),    createWrap = require('./_createWrap'),    getHolder = require('./_getHolder'),    replaceHolders = require('./_replaceHolders');/** Used to compose bitmasks for function metadata. */var WRAP_BIND_FLAG = 1,    WRAP_PARTIAL_FLAG = 32;/** * Creates a function that invokes `func` with the `this` binding of `thisArg` * and `partials` prepended to the arguments it receives. * * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds, * may be used as a placeholder for partially applied arguments. * * **Note:** Unlike native `Function#bind`, this method doesn't set the "length" * property of bound functions. * * @static * @memberOf _ * @since 0.1.0 * @category Function * @param {Function} func The function to bind. * @param {*} thisArg The `this` binding of `func`. * @param {...*} [partials] The arguments to be partially applied. * @returns {Function} Returns the new bound function. * @example * * function greet(greeting, punctuation) { *   return greeting + ' ' + this.user + punctuation; * } * * var object = { 'user': 'fred' }; * * var bound = _.bind(greet, object, 'hi'); * bound('!'); * // => 'hi fred!' * * // Bound with placeholders. * var bound = _.bind(greet, object, _, '!'); * bound('hi'); * // => 'hi fred!' */var bind = baseRest(function(func, thisArg, partials) {  var bitmask = WRAP_BIND_FLAG;  if (partials.length) {    var holders = replaceHolders(partials, getHolder(bind));    bitmask |= WRAP_PARTIAL_FLAG;  }  return createWrap(func, bitmask, thisArg, partials, holders);});// Assign default placeholders.bind.placeholder = {};module.exports = bind;
 |