JSFiddle - React, Tailwind, and code Playground

by Artem

JavaScript

var chatMediator = {
  users: [],
  addUser: function(user) {
    this.users.push(user);
  },
  sendMessage: function(msg, user) {
    for (var i = 0; i < this.users.length; i++) {
      if (this.users[i] !== user) {
        this.users[i].receive(msg, user);
      }
    }
  }
};

var User = function(name) {
  //this.mediator = mediator;
  this.__proto__.mediator = chatMediator;
  this.mediator.addUser(this);
  this.name = name;
};

User.prototype.send = function(msg) {
  console.log(this.name + ": sending message: " + msg);
  this.mediator.sendMessage(msg, this);
};

User.prototype.receive = function(msg, user) {
  console.log(this.name + ": received message from " + user.name + " : " + msg);
};

var Adam = new User("Adam");
var Poll = new User("Poll");
var Jon = new User("Jon");
var Allan = new User("Allan");

Adam.send('Hi');