Get a proxy that automatically binds methods to their instance
Inspired by Sindre Sorhus's auto-bind
package, but instead of altering the target object, it returns an ES6 proxy that will automatically bind any accessed functions to the instance.
This package assumes the existence of some ES6 features such as Proxy, it works with Node 6+.
npm install auto-bind-proxy
var autoBind = require('auto-bind-proxy');
const ab = require('auto-bind-proxy');
class Unicorn {
constructor(name) { this.name = name; }
message() { return `${this.name} is awesome!`; }
}
const unicorn = new Unicorn('Rainbow');
// Grab the method off the instance
// same as `message = unicorn.message.bind(unicorn)`
const message = ab(unicorn).message;
// Still bound to the instance
message();
// -> 'Rainbow is awesome!'
// Properties that are not functions are returned normally
ab(unicorn).name === unicorn.name;
// -> true
const foo = {
bar() { ... }
baz() { ... }
qux() { ... }
...
};
// Multiple methods can be retrieved
const { bar, baz, qux } = ab(foo);
var autoBind = require('auto-bind-proxy');
-
obj
: a non-null object; -
returns a proxy that automatically binds retrieved methods to
obj
on access.
MIT