Intuition

  • subscribe would push the function in the listeners array.
  • On call of notify method call all methods in the listeners array.
  • How to remove element from array? Can you do func1 == func2?
function Producer() {  
 this.listeners = [];  
}  
Producer.prototype.add = function(listener) {  
this.listeners.push(listener);
};  
Producer.prototype.remove = function(listener) {  
var index = this.listeners.indexOf(listener);  
this.listeners.splice(index, 1);  
};  
Producer.prototype.notify = function(message) {  
this.listeners.forEach(function(listener) {  
listener.update(message);  
});  
};
 
var listener1 = {  
update: function(message) {  
console.log('Listener 1 received:', message);  
}  
};  
var listener2 = {  
update: function(message) {  
console.log('Listener 2 received:', message);  
}  
};  
var notifier = new Producer();  
notifier.add(listener1);  
notifier.add(listener2);  
notifier.notify('Hello there!')