//在不影响其他闭包的情况下写入新功能
var Observer = (function(){
var _message = {};
return {
regist: function(type, fn){
if(typeof _message[type] === 'undefined'){
_message[type] = [fn];
}else{
_message[type].push(fn);
}
},
fire: function(type, args){
if(!_message[type]){
return;
}
var events = {
type: type,
args: args || {}
},
i = 0,
len = _message[type].length;
for(; i < len; i++){
_message[type][i].call(this, events);
}
},
remove: function(){
if(_message[type] instanceof Array){
var i = _message[type].length - 1;
for(; i >= 0; i--){
_message[type][i] === fn && _message[type].splice(i, 1);
}
}
}
}
})();
//project A
(function(){
function add(){
console.log('add11');
}
Observer.regist('add', add);
})();
//project B
(function(){
$('button').click(function(){
Observer.fire('add', null);
})
})();