Guest User

Untitled

a guest
Sep 23rd, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.23 KB | None | 0 0
  1. module.exports = (function(){
  2. function Subject() {
  3. this.events = {};
  4. }
  5. function RemoveAllEvents(){
  6. this.events={};
  7. }
  8. Subject.prototype.on = function (evt, cb, listener) {
  9. this.events[evt] = this.events[evt] || [];
  10. this.events[evt].push({
  11. method: cb,
  12. listener: listener
  13. });
  14. }
  15.  
  16. Subject.prototype.off = function (evt, cb, listener) {
  17. //event, cb, listener
  18. if (evt && cb && listener) {
  19. this.events[evt] = this.events[evt].filter(function (element) {
  20. return !(element.listener === listener && element.method === cb);
  21. }, this);
  22. }
  23. //event and listener
  24. else if (evt && listener) {
  25. this.events[evt] = this.events[evt].filter(function (element) {
  26. return element.listener !== listener;
  27. }, this);
  28. }
  29. //only listener
  30. else if (listener) {
  31. for (var evt in this.events) {
  32. this.events[evt] = this.events[evt].filter(function (element) {
  33. return element.listener !== listener;
  34. }, this);
  35. }
  36. }
  37. }
  38.  
  39. Subject.prototype.trigger = function (evt) {
  40. this.events[evt] && this.events[evt].forEach(function (element) {
  41. element.method.call(element.listener)
  42. }, this);
  43. }
  44. return Subject;
  45. })();
Add Comment
Please, Sign In to add comment