1. class Subject {
    2. constructor(name) {
    3. this.name = name
    4. this.state = '开心'
    5. this.observer = []
    6. }
    7. attach(o) {
    8. this.observer.push(o)
    9. }
    10. setState(newState) {
    11. this.state = newState
    12. this.observer.forEach(o => o.updata(this))
    13. }
    14. }
    15. class Observer {
    16. constructor(name) {
    17. this.name = name
    18. }
    19. updata(baby) {
    20. console.log(this.name,baby);
    21. }
    22. }
    23. let baby = new Subject('baby')
    24. let father = new Observer('father')
    25. let mom = new Observer('mom')
    26. baby.attach(father)
    27. baby.attach(mom)
    28. baby.setState('不开心')
    1. class EventEmitter {
    2. // 补全代码
    3. constructor() {
    4. this.events = {}
    5. }
    6. on(event,fn) {
    7. if(!this.events[event]) {
    8. this.events[event] = [fn]
    9. } else {
    10. this.events[event].push(fn)
    11. }
    12. }
    13. emit(event) {
    14. if(this.events[event]) {
    15. this.events[event].forEach(fn => fn())
    16. }
    17. }
    18. }