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
}
}
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'])
yarn add es6-class-bind-all --dev
or npm
npm install es6-class-bind-all --save-dev
The MIT License (MIT). Please see License File for more information.