观察者模式实现

不念不忘少年蓝@ 2021-09-02 04:13 456阅读 0赞
  1. // 升级观察者
  2. var Observer = (function() {
  3. // 定义真正的观察者
  4. var ob = {
  5. }
  6. // 定义接口
  7. return {
  8. on: function(type, fn) {
  9. /*
  10. * on方法用于向观察者对象中添加事件
  11. * @type 要添加的事件名称
  12. * @fn 要添加的事件函数
  13. **/
  14. // 判断当前事件属性是否存在,直接push即可
  15. if (ob[type]) {
  16. ob[type].push(fn);
  17. } else {
  18. ob[type] = [fn];
  19. // ob.type = [f]
  20. }
  21. },
  22. /**
  23. * trigger方法用于触发观察者对象中的事件
  24. * @type 要触发的事件名称
  25. **/
  26. // trigger用于触发观察者对象中的事件
  27. trigger: function(type, val) {
  28. for (var i = 0; i < ob[type].length; i++) {
  29. ob[type][i](val);
  30. }
  31. },
  32. // off方法用于移除某个事件
  33. off: function(type, fn) {
  34. // 判断是要删除一组还是要删除某一个事件函数
  35. if (fn) {
  36. // 说明是要删除某个函数
  37. for (var i = 0; i < ob[type].length; i++) {
  38. if (ob[type][i] == fn) {
  39. ob[type].splice(i, 1);
  40. }
  41. }
  42. } else if (type) {
  43. ob[type] = [];
  44. } else {
  45. // 情况观察者对象中的所有数据
  46. ob = {};
  47. }
  48. },
  49. // once方法 通过该方法只能触发一次事件
  50. once: function(type, fn) {
  51. // 定义的新的函数
  52. function aaa() {
  53. // 执行fn
  54. fn();
  55. // 执行完之后移除该函数
  56. Observer.off(type, aaa);
  57. }
  58. Observer.on(type, aaa);
  59. }
  60. check: function() {
  61. console.log(ob);
  62. },
  63. }
  64. })()

发表评论

表情:
评论列表 (有 0 条评论,456人围观)

还没有评论,来说两句吧...

相关阅读

    相关 观察模式

    观察者模式 Observer   观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。   这个主题对象在状态上发生变化时,会通知所有观察者对

    相关 观察模式

    什么是观察者模式 有人这么说 > 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。 > > 这个主题对象在状态上发生变化时,会通知所有观

    相关 观察模式

    场景描述:  一个气象站应用,可以实时获取温度、湿度和气压信息,气象站提供一个封装好的类WeatherData,该类有最新的气象信息,当这些信息发生变动的时候,类中的meas

    相关 观察模式

    观察者模式:定义了对象之间的一对多的依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。 观察者模式图: ![输入图片说明][13105107_Mf

    相关 观察模式

    什么是观察者模式? 简单的来说,观察者模式=出版者+订阅者。用比较书面的话来说的话是:定义了对象之间的一对多依赖,当一所对应的对象状态改变时,它的所有依赖者都会收到通知并

    相关 观察模式

    当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。 意图:定义对象

    相关 观察模式

    对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。 介绍 ...