emit.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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. i--;
  50. }
  51. }
  52. };
  53. return EventEmit;
  54. }();
  55. var _default = EventEmit;
  56. exports["default"] = _default;