UNPKG

551 BJavaScriptView Raw
1const expose = require('./expose');
2const { assign } = Object;
3
4/**
5 * Bind an infinite set of methods to a class instance.
6 *
7 * @param {Object} instance
8 * Instance of a class
9 * @param {...string} methods
10 * Method names of a class
11 */
12function bind(instance, ...methods) {
13 const reduceBoundMethods = (accumulator, name) =>
14 assign(accumulator, {
15 [name]: instance[name].bind(instance),
16 });
17 const boundMethods = methods.reduce(reduceBoundMethods, {});
18
19 assign(instance, boundMethods);
20}
21
22module.exports = expose({
23 bind,
24});