state machine es6
by João Vitor Scheuermann
JavaScript
class StateMachine {
constructor () {
this.states = new Object();
this.currentstate = undefined;
}
add (name, state) {
this.states[name] = state;
}
change (name) {
if (name in this.states && name !== this.currentstate) {
this.currentstate = name;
this.states[name](this);
}
}
delete (name) {
delete this.states[name];
}
}
let sm = new StateMachine();
sm.add("A", self => {
console.log(self)
})
sm.add("B", self => {
console.log(self)
})
sm.change("A");
sm.change("A");