function Events() {
this.on = function (eventName, callBack) {
if (!this.handles) {
this.handles = {}
}
if (!this.handles[eventName]) {
this.handles[eventName] = []
}
this.handles[eventName].push(callBack)
}
this.emit = function (eventName, obj) {
if (this.handles[eventName]) {
for (var i = 0; i < this.handles[eventName].length; i++) {
this.handles[eventName][i](obj)
}
}
}
return this
}
// 调用
var events = new Events()
events.on('say', function (name) {
console.log('Hello', name)
})
events.emit('say', 'Jony yu')
// 每个对象是独立的 event1、event2 之间的事件监听互相不影响
var event1 = new Events()
var event2 = new Events()
event1.on('say', function () {
console.log('Jony event1')
})
event2.on('say', function () {
console.log('Jony event2')
})
event1.emit('say')
event2.emit('say')
手写发布订阅
最新推荐文章于 2024-07-12 14:10:05 发布