class EventHandler { constructor() { this.handlers = {}; } on(event, callback){ if(this.handlers[event]){ this.handlers[event].push(callback) } else { this.handlers[event] = [callback] } } trigger(event){ if(this.handlers["all"]){ for (var i = 0; i < this.handlers["all"].length; i++) { this.handlers["all"][i](event) } } let event_args = Array.from(arguments) event_args.shift() if(this.handlers[event]){ for (var i = 0; i < this.handlers[event].length; i++) { this.handlers[event][i](...event_args) } } } }