You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123456789101112131415161718192021222324252627282930313233343536
  1. function События(uuid)
  2. {
  3. this.создать = function()
  4. {
  5. this.обработчики = [];
  6. this.обработчики = {};
  7. };
  8. this.подписать = function(обработчик, имя)
  9. {
  10. let указатель = имя || uuid();
  11. this.обработчики[указатель] = обработчик;
  12. };
  13. this.отписать = function(обработчик) {
  14. for (var указатель in this.обработчики) {
  15. let обр = this.обработчики[указатель];
  16. if (обр == обработчик)
  17. {
  18. delete this.обработчики[указатель];
  19. return;
  20. }
  21. }
  22. };
  23. this.уведомить = function(событие) {
  24. for (var номер in this.обработчики)
  25. {
  26. var обработчик = this.обработчики[номер];
  27. обработчик.обработатьСобытие(событие);
  28. }
  29. };
  30. // Конструктор.
  31. this.создать();
  32. }