foop
Version:
interfaces that describe their intentions.
47 lines (45 loc) • 4.41 kB
JavaScript
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==