当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知。
    最简单的例子,比如给元素添加事件监听

    1. documentElement.addEventListener('click', function (event) {})

    全局EventBus写法

    1. var Event = (function () {
    2. var clientList = {}
    3. var listen = function (key, fn) {
    4. if (!clientList[key]) {
    5. clientList[key] = []
    6. }
    7. clientList[key].push(fn)
    8. }
    9. var trigger = function () {
    10. var key = Array.prototype.shift.call(arguments)
    11. var fns = clientList[key]
    12. if (!fns || fns.length === 0) {
    13. return false
    14. }
    15. for (var i = 0; i < fns.length; i++) {
    16. fns[i].apply(this, arguments)
    17. }
    18. }
    19. var remove = function (key, fn) {
    20. var fns = clientList[key]
    21. if (!fns) {
    22. return false
    23. }
    24. if (!fn) {
    25. fns.length = 0
    26. } else {
    27. var index = fns.findIndex(e => e === fn)
    28. fns.splice(index, 1)
    29. }
    30. }
    31. return {
    32. listen,
    33. trigger,
    34. remove
    35. }
    36. })()