// js创建观察者,将代码放在必报之中,当前页面接在之后就进行执行
let Observer = (function () {
let _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;
console.log(type)
let event = {
type: type,
arges: args || []
}
// 获取需要执行的消息队列
let _len = _message[type];
for (let i = 0; i < _len.length; i++) {
_message[type][i].call(this, event);
}
},
remove: function (type, fn) {
if (Array.isArray(_message[type]) && _message[type].length) {
for (let index = 0; index < _message[type].length; index++) {
if (_message[type][index] === fn) {
_message[type].splice(i, 1);
}
}
}
}
}
})()
Observer.regist('test', function (e) {
// e 参数 fire 传递进去的
console.log(e, 'e')
})
Observer.fire('test', {
msg: 'zyn'
})
js 实现观察者模式
最新推荐文章于 2024-05-04 13:37:20 发布