UNPKG

foop

Version:

interfaces that describe their intentions.

47 lines (45 loc) 4.41 kB
var arity = require('./arity') var curry = require('./curry') /** * Creates a function that is bound to a context. * @since 5.0.0-beta.5 * @memberOf fp * * @param {Function} fn The function to bind to context * @param {Object} thisArg The context to bind `fn` to * @return {Function} A function that will execute in the context of `thisArg`. * * @tests fp/bind * * @func * @fork v0.6.0 * @category Function * @category Object * @sig (* -> *) -> {*} -> (* -> *) * @symb bind(f, o)(a, b) = f.call(o, a, b) * * {@link https://github.com/jashkenas/underscore/blob/master/underscore.js#L765 underscore-bind} * {@link https://github.com/lodash/lodash/blob/master/bindKey.js lodash-bind-key} * {@link https://github.com/ramda/ramda/blob/master/src/partial.js ramda-partial} * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind mozilla-Function.bind} * @see {@link mozilla-Function.bind} * @see {@link ramda-partial} * @see {@link lodash-bind-key} * @see {@link underscore-bind} * * @NOTE `bind` does not provide the additional argument-binding capabilities of * [Function.prototype.bind](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind). * * @example * * var log = bind(console.log, console); * R.pipe(R.assoc('a', 2), R.tap(log), R.assoc('a', 3))({a: 1}); //=> {a: 3} * // logs {a: 2} * */ module.exports = curry(2, function bind(fn, thisArg) { return arity(fn.length, function() { return fn.apply(thisArg, arguments) }) }) //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluZC5qcyIsInNvdXJjZXMiOlsiYmluZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBhcml0eSA9IHJlcXVpcmUoJy4vYXJpdHknKVxuY29uc3QgY3VycnkgPSByZXF1aXJlKCcuL2N1cnJ5JylcblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpcyBib3VuZCB0byBhIGNvbnRleHQuXG4gKiBAc2luY2UgNS4wLjAtYmV0YS41XG4gKiBAbWVtYmVyT2YgZnBcbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBUaGUgZnVuY3Rpb24gdG8gYmluZCB0byBjb250ZXh0XG4gKiBAcGFyYW0ge09iamVjdH0gdGhpc0FyZyBUaGUgY29udGV4dCB0byBiaW5kIGBmbmAgdG9cbiAqIEByZXR1cm4ge0Z1bmN0aW9ufSBBIGZ1bmN0aW9uIHRoYXQgd2lsbCBleGVjdXRlIGluIHRoZSBjb250ZXh0IG9mIGB0aGlzQXJnYC5cbiAqXG4gKiBAdGVzdHMgZnAvYmluZFxuICpcbiAqIEBmdW5jXG4gKiBAZm9yayB2MC42LjBcbiAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHNpZyAoKiAtPiAqKSAtPiB7Kn0gLT4gKCogLT4gKilcbiAqIEBzeW1iIGJpbmQoZiwgbykoYSwgYikgPSBmLmNhbGwobywgYSwgYilcbiAqXG4gKiB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2phc2hrZW5hcy91bmRlcnNjb3JlL2Jsb2IvbWFzdGVyL3VuZGVyc2NvcmUuanMjTDc2NSB1bmRlcnNjb3JlLWJpbmR9XG4gKiB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2xvZGFzaC9sb2Rhc2gvYmxvYi9tYXN0ZXIvYmluZEtleS5qcyBsb2Rhc2gtYmluZC1rZXl9XG4gKiB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3JhbWRhL3JhbWRhL2Jsb2IvbWFzdGVyL3NyYy9wYXJ0aWFsLmpzIHJhbWRhLXBhcnRpYWx9XG4gKiB7QGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvRnVuY3Rpb24vYmluZCBtb3ppbGxhLUZ1bmN0aW9uLmJpbmR9XG4gKiBAc2VlIHtAbGluayBtb3ppbGxhLUZ1bmN0aW9uLmJpbmR9XG4gKiBAc2VlIHtAbGluayByYW1kYS1wYXJ0aWFsfVxuICogQHNlZSB7QGxpbmsgbG9kYXNoLWJpbmQta2V5fVxuICogQHNlZSB7QGxpbmsgdW5kZXJzY29yZS1iaW5kfVxuICpcbiAqIEBOT1RFIGBiaW5kYCBkb2VzIG5vdCBwcm92aWRlIHRoZSBhZGRpdGlvbmFsIGFyZ3VtZW50LWJpbmRpbmcgY2FwYWJpbGl0aWVzIG9mXG4gKiAgICAgICBbRnVuY3Rpb24ucHJvdG90eXBlLmJpbmRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0Z1bmN0aW9uL2JpbmQpLlxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogICAgICB2YXIgbG9nID0gYmluZChjb25zb2xlLmxvZywgY29uc29sZSk7XG4gKiAgICAgIFIucGlwZShSLmFzc29jKCdhJywgMiksIFIudGFwKGxvZyksIFIuYXNzb2MoJ2EnLCAzKSkoe2E6IDF9KTsgLy89PiB7YTogM31cbiAqICAgICAgLy8gbG9ncyB7YTogMn1cbiAqXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gY3VycnkoMiwgZnVuY3Rpb24gYmluZChmbiwgdGhpc0FyZykge1xuICByZXR1cm4gYXJpdHkoZm4ubGVuZ3RoLCBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gZm4uYXBwbHkodGhpc0FyZywgYXJndW1lbnRzKVxuICB9KVxufSlcbiJdLCJuYW1lcyI6WyJjb25zdCJdLCJtYXBwaW5ncyI6IkFBQUFBLEdBQUssQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQztBQUNoQ0EsR0FBSyxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF1Q2hDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxTQUFTLElBQUksQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFO0VBQ25ELE9BQU8sS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsV0FBVztJQUNqQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQztHQUNwQyxDQUFDO0NBQ0gsQ0FBQzsifQ==