创建一个观察者
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>创建一个观察者</title>
</head>
<body>
<script>
//将观察者放在闭包中,当页面加载就立即执行
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() {}
}
})();
window.onload = function() {
}
</script>
</body>
</html>