JSFiddle - React, Tailwind, and code Playground

JavaScript

function ConcreteObservable() {
  this.observers = [];
}
ConcreteObservable.prototype.addObserver = function(observerObject){
  this.observers[this.observers.length] = observerObject;
};
ConcreteObservable.prototype.removeObserver = function (observerObject) {
  this.observers = this.observers.filter(item => item !== observerObject);
};
ConcreteObservable.prototype.notifyObserver = function (data) {
  this.observers.forEach(observer => {
    observer.handleEvent('here is event');
  });
};

function Observer() {
}
Observer.prototype.handleEvent = function (data) {
  console.log(data);
};

const observable = new ConcreteObservable();

const observer1 = new Observer();
const observer2 = new Observer();
const observer3 = new Observer();

observable.addObserver(observer1);
observable.addObserver(observer2);
observable.addObserver(observer3);
console.log(observable);

observable.removeObserver(observer3);
console.log(observable);

observable.notifyObserver();