JSFiddle - React, Tailwind, and code Playground

JavaScript

var myClass = function(){
    this._callbacks = {};
};
myClass.prototype = {
  addEvent: function(evname,callback) {
    if (!this._callbacks[evname]) {
      this._callbacks[evname] = $.Callbacks();
    }
    this._callbacks[evname].add(callback);
  },
  removeEvent: function(evname,callback) {
    if (!this._callbacks[evname]) {
      return;
    }
    this._callbacks[evname].remove(callback);
  },
  triggerEvent: function(evname) {
    if (this._callbacks[evname]) {
      this._callbacks[evname].fire();
    }
  }
}
var foo = new myClass();
foo.addEvent("foo",function(){console.log('foo');});
foo.triggerEvent("foo");
foo.removeEvent("foo");
foo.triggerEvent("foo");