JavaScript Observerのサンプル
function Observer() {
this.listeners = {};
}
Observer.prototype = {
on: function(event, func) {
if(!this.listeners[event]) {
this.listeners[event] = [];
}
this.listeners[event].push(func);
},
off: function(event, func) {
var ref = this.listeners[event];
for (var i = 0, il = ref.length; i < il; i++) {
if(ref[i] === func) {
ref.splice(i, 1);
}
}
},
trigger: function(event) {
var ref = this.listeners[event];
for (var i = 0, il = ref.length; i < il; i++) {
if(typeof ref[i] === 'function') {
ref[i]();
}
}
}
};
var observer = new Observer();
var r = document.getElementById('result');
var ohayou = function() {
r.innerHTML += 'ohayou<br>';
};
var konbanwa = function() {
r.innerHTML += 'konbanwa<br>';
};
var oyasumi = function() {
r.innerHTML += 'oyasumi<br>';
};
observer.on('night', konbanwa);
observer.on('morning', ohayou);
observer.on('night', oyasumi);
observer.trigger('morning');
observer.trigger('night');