Skip to content

Instantly share code, notes, and snippets.

@outbreak
Created December 20, 2016 04:14
Show Gist options
  • Save outbreak/effdc3420d284fdaab2b2688f8fc5016 to your computer and use it in GitHub Desktop.
Save outbreak/effdc3420d284fdaab2b2688f8fc5016 to your computer and use it in GitHub Desktop.
Javascript Observer pattern
function Event() {
this.observers = [];
}
Event.prototype.raise = function (data) {
for (var i in this.observers) {
var item = this.observers[i];
item.observer.call(item.context, data);
}
};
Event.prototype.subscribe = function (observer, context) {
var ctx = context || null;
this.observers.push({
observer: observer,
context: ctx
});
};
Event.prototype.unsubscribe = function (observer, context ) {
for (var i in this.observers) {
if ( this.observers[i].observer == observer && this.observers[i].context == context ) {
delete this.observers[i];
}
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment