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");