1.0.0 • Published 6 years ago
es6-class-bind-all v1.0.0
Problem
As you see, too many .bind()
operations in constructor. Once you have tons of classes
are called in callback or whatever something change it's scope, it will be horribly troublesome.
class Person {
constructor() {
this.name = 'Steve'
this.age = 20
this.gender = 'male'
this.setName = this.setName.bind(this)
this.setAge = this.setAge.bind(this)
this.setGender = this.setGender.bind(this)
}
setName(name) {
this.name = name
}
setAge(age) {
this.age = age
},
setGender(gender) {
this.gender = gender
}
}
Easy Way
Bind all methods in constructor.
import es6ClassBindAll from 'es6-class-bind-all'
class Person {
constructor() {
this.name = 'Jack'
this.age = 20
this.gender = 'male'
es6ClassBindAll(this)
}
setName(name) {
this.name = name
}
setAge(age) {
this.age = age
},
setGender(gender) {
this.gender = gender
}
}
Or you can bind specified methods in constructor depend on your situation.
es6ClassBindAll(this, ['setGender'])
Install
yarn add es6-class-bind-all --dev
or npm
npm install es6-class-bind-all --save-dev
License
The MIT License (MIT). Please see License File for more information.