var Event = {
callbacks: {},
on: function (eventName, callback) {
//你的代码
if (!this.callbacks[eventName]) {
this.callbacks[eventName] = [];
this.callbacks[eventName].push(callback)
}
else {
this.callbacks[eventName].push(callback)
}
},
emit: function (eventName, parameter) {
//你的代码
if (!this.callbacks[eventName]) {
return false
}
else {
while (this.callbacks[eventName].length > 0) {
this.callbacks[eventName].shift().call(this, parameter)
}
}
}
};
Event.on('test', function (result) {
console.log(result);
});
Event.on('test', function () {
console.log('test');
});
Event.emit('test', 'hello world'); // 输出 'hello world' 和 'test'
var person1 = {};
var person2 = {};
Object.assign(person1, Event);
Object.assign(person2, Event);
person1.on('call1', function () {
console.log('person1');
});
person2.on('call2', function () {
console.log('person2');
});
person1.emit('call1'); // 输出 'person1'
person1.emit('call2'); // 没有输出
person2.emit('call1'); // 没有输出
person2.emit('call2'); // 输出 'person2'
js观察者模式
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 观察者模式 目的 通知对象的变化到另一些对象 何时使用 某些对象的状态改变需要触发另一些对象的改变 广播能力 常见...