Advertisement
Guest User

Untitled

a guest
Mar 25th, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.51 KB | None | 0 0
  1. ### Event Manager Class
  2.  
  3. ```js
  4.  
  5. var EventsManagerClass = function() {
  6.  
  7. /**
  8. * Store events callback and context.
  9. *
  10. * @ver Object
  11. */
  12. var events = {}
  13.  
  14. /**
  15. * Register an event callback.
  16. *
  17. * @param string event
  18. * @param function callback
  19. * @param object bind
  20. * @return EventsManagerClass
  21. */
  22. this.on = function(event, callback, bind) {
  23. if (bind) {
  24. callback = callback.bind(bind)
  25. }
  26. if (!events[event]) {
  27. events[event] = []
  28. }
  29. events[event].push(callback)
  30. return this
  31. }
  32.  
  33. /**
  34. * Remove an event.
  35. *
  36. * @param string event
  37. * @param function callback
  38. * @return EventsManagerClass
  39. */
  40. this.off = function(event, callback) {
  41. if (!callback) {
  42. events[event] = []
  43. return this
  44. }
  45. events[event].filter(function(fn) {
  46. if (fn !== callback) {
  47. return fn;
  48. }
  49. })
  50. return this
  51. }
  52.  
  53. /**
  54. * Trigger an event.
  55. *
  56. * @return mixed
  57. */
  58. this.trigger = function() {
  59. var args = Array.prototype.slice.call(arguments, 1);
  60. let event = arguments[0]
  61. if (!events[event]) {
  62. return false
  63. }
  64. events[event].forEach(function(fn) {
  65. fn.apply(this, args)
  66. })
  67. return events[event].length
  68. }
  69.  
  70. }
  71.  
  72. ```
  73.  
  74. ### Event Manager Factory
  75.  
  76. ```js
  77. /**
  78. * Event Manager Factory.
  79. *
  80. * @return EventsManagerClass
  81. */
  82. function EventsManager() {
  83. return new EventsManagerClass()
  84. }
  85. ```
  86.  
  87. ### Person Class.
  88.  
  89. ```js
  90. /**
  91. * Person class.
  92. *
  93. * @param string _name
  94. * @param EventsManagerClass _eventManager
  95. */
  96. function Person(_name, _eventManager) {
  97. this.foods = []
  98. this.name = _name
  99. this.eventManager = _eventManager
  100. }
  101. ```
  102.  
  103. ### Log Food Function
  104.  
  105.  
  106. ```js
  107. // Adding `.bind(this)`
  108. this.foods.forEach(function(item) {
  109. console.log("I'm " + this.name + "and I ate " + item);
  110. }.bind(this));
  111. ```
  112.  
  113. ```js
  114. // Set a "global" var.
  115. var that = this
  116. this.foods.forEach(function(item) {
  117. console.log("I'm " + that.name + "and I ate " + item);
  118. });
  119. ```
  120.  
  121. ```js
  122. // Use arrow function
  123. this.foods.forEach((item) => {
  124. console.log("I'm " + this.name + "and I ate " + item);
  125. });
  126. ```
  127.  
  128. ### Log results to HTML File
  129.  
  130. ```js
  131. console.log = function() {
  132. var args = Array.prototype.slice.call(arguments, 1);
  133. document.write('<strong>' + arguments[0] + '</strong> ')
  134. document.write(args.join(','))
  135. document.write('<br />')
  136. }
  137. ```
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement