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观察者模式
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 观察者模式 目的 通知对象的变化到另一些对象 何时使用 某些对象的状态改变需要触发另一些对象的改变 广播能力 常见...