class Subject {
constructor(name) {
this.name = name
this.state = '开心'
this.observer = []
}
attach(o) {
this.observer.push(o)
}
setState(newState) {
this.state = newState
this.observer.forEach(o => o.updata(this))
}
}
class Observer {
constructor(name) {
this.name = name
}
updata(baby) {
console.log(this.name,baby);
}
}
let baby = new Subject('baby')
let father = new Observer('father')
let mom = new Observer('mom')
baby.attach(father)
baby.attach(mom)
baby.setState('不开心')
class EventEmitter {
// 补全代码
constructor() {
this.events = {}
}
on(event,fn) {
if(!this.events[event]) {
this.events[event] = [fn]
} else {
this.events[event].push(fn)
}
}
emit(event) {
if(this.events[event]) {
this.events[event].forEach(fn => fn())
}
}
}