为解决主题对象与观察者之间的耦合
var Observer = (function(){
var _message = {};
return {
//订阅信息
register: function(type,fn){
if(_message[type] === "undefined"){
_message[type] = [fn]
}else{
_message[type].push(fn);
}
},
//发布消息type: 发布消息的类型,args: 发布消息的参数
publish: function(type,args){
var len = _message[type].length,
i=0,
events = {
type: type,
args: args || {}
};
//遍历消息动作
for(;i<len;i++){
//依次执行注册的消息对应的动作
_message[type][i].call(this,events);
}
},
//移除订阅的消息
remove: function(type){
if(_message[type] instanceof Array){
var len = _message[type].length-1;
for(;i>=0;i--){
_message[type] && _message[type].splice(i,1);
}
}
}
}
})();