es6-class-bind-all

Automaticlly bind 'this' scope of all methods in es6 class

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
es6-class-bind-all
1101.0.05 years ago5 years agoMinified + gzip package size for es6-class-bind-all in KB

Readme

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.