Automatically bind methods to their class instance
It also correctly binds inherited properties.
If you're targeting Node.js 12 and later or the browser, you should consider using class fields instead.
npm install auto-bind
import autoBind from 'auto-bind';
class Unicorn {
constructor(name) {
this.name = name;
autoBind(this);
}
message() {
return `${this.name} is awesome!`;
}
}
const unicorn = new Unicorn('Rainbow');
// Grab the method off the class instance
const message = unicorn.message;
// Still bound to the class instance
message();
//=> 'Rainbow is awesome!'
// Without `autoBind(this)`, the above would have resulted in
message();
//=> Error: Cannot read property 'name' of undefined
Bind methods in self
to their class instance.
Returns the self
object.
Type: object
An object with methods to bind.
Type: object
Type: Array<string | RegExp>
Bind only the given methods.
Type: Array<string | RegExp>
Bind methods except for the given methods.
Same as autoBind
but excludes the default React component methods.
import autoBindReact from 'auto-bind/react';
class Foo extends React.Component {
constructor(props) {
super(props);
autoBindReact(this);
}
// …
}
- bind-methods - Bind all methods in an object to itself or a specified context