emit.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. "use strict";
  2. exports.__esModule = true;
  3. exports["default"] = void 0;
  4. var _common = require("../../util/common");
  5. // 实现简单的事件机制
  6. var EventEmit = /*#__PURE__*/function () {
  7. function EventEmit() {
  8. this.__events = {};
  9. }
  10. var _proto = EventEmit.prototype;
  11. _proto.on = function on(type, listener) {
  12. if (!type || !listener) {
  13. return;
  14. }
  15. var events = this.__events[type] || [];
  16. events.push(listener);
  17. this.__events[type] = events;
  18. };
  19. _proto.emit = function emit(type, e) {
  20. var _this = this;
  21. if ((0, _common.isObject)(type)) {
  22. e = type;
  23. type = e && e.type;
  24. }
  25. if (!type) {
  26. return;
  27. }
  28. var events = this.__events[type];
  29. if (!events || !events.length) {
  30. return;
  31. }
  32. events.forEach(function (listener) {
  33. listener.call(_this, e);
  34. });
  35. };
  36. _proto.off = function off(type, listener) {
  37. var __events = this.__events;
  38. var events = __events[type];
  39. if (!events || !events.length) {
  40. return;
  41. } // 如果没有指定方法,则删除所有项
  42. if (!listener) {
  43. delete __events[type];
  44. return;
  45. } // 删除指定的 listener
  46. for (var i = 0, len = events.length; i < len; i++) {
  47. if (events[i] === listener) {
  48. events.splice(i, 1);
  49. }
  50. }
  51. };
  52. return EventEmit;
  53. }();
  54. var _default = EventEmit;
  55. exports["default"] = _default;