定义
观察者模式:又叫发布订阅模式,多个观察者可以实时监听一个主题对象,而javascript中最常用的实现方式是事件触发机制。
es6实现:
要知道需要有什么东西,类和构造函数是es6中基本的对象结构
class BaseEvent {
constructor() {}
}
首先类中要能存储各种触发回调函数,通常用数组
此时构造函数如下
constructor() {
this.handlerFunc = [];
}
现在类的主体已经完成,考虑添加事件行为
如:监听事件函数on;触发事件函数trigger等
然后是实现
on(eName, callback) {
if (!this.handlerFunc[eName]) { // 判断事件是否存在
this.handlerFunc[eName] = [];
}
this.handlerFunc[eName].push(callback);
}
trigger(eName, params) {
this.this.handlerFunc[eName].forEach(func => {
func.call(this, params);
})
}
最后事件的继承
class MyEvent extends BaseEvent {
constructor() {
super();
}
}
es6中class与extends 语法糖
es6使用语法糖实现类与类的继承,相较于es5要简单的多:es5中的继承有原型链继承,构造函数(注意与es6中构造函数的区别)继承,组合继承,组合继承是最常采用的方法