Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ### Event Manager Class
- ```js
- var EventsManagerClass = function() {
- /**
- * Store events callback and context.
- *
- * @ver Object
- */
- var events = {}
- /**
- * Register an event callback.
- *
- * @param string event
- * @param function callback
- * @param object bind
- * @return EventsManagerClass
- */
- this.on = function(event, callback, bind) {
- if (bind) {
- callback = callback.bind(bind)
- }
- if (!events[event]) {
- events[event] = []
- }
- events[event].push(callback)
- return this
- }
- /**
- * Remove an event.
- *
- * @param string event
- * @param function callback
- * @return EventsManagerClass
- */
- this.off = function(event, callback) {
- if (!callback) {
- events[event] = []
- return this
- }
- events[event].filter(function(fn) {
- if (fn !== callback) {
- return fn;
- }
- })
- return this
- }
- /**
- * Trigger an event.
- *
- * @return mixed
- */
- this.trigger = function() {
- var args = Array.prototype.slice.call(arguments, 1);
- let event = arguments[0]
- if (!events[event]) {
- return false
- }
- events[event].forEach(function(fn) {
- fn.apply(this, args)
- })
- return events[event].length
- }
- }
- ```
- ### Event Manager Factory
- ```js
- /**
- * Event Manager Factory.
- *
- * @return EventsManagerClass
- */
- function EventsManager() {
- return new EventsManagerClass()
- }
- ```
- ### Person Class.
- ```js
- /**
- * Person class.
- *
- * @param string _name
- * @param EventsManagerClass _eventManager
- */
- function Person(_name, _eventManager) {
- this.foods = []
- this.name = _name
- this.eventManager = _eventManager
- }
- ```
- ### Log Food Function
- ```js
- // Adding `.bind(this)`
- this.foods.forEach(function(item) {
- console.log("I'm " + this.name + "and I ate " + item);
- }.bind(this));
- ```
- ```js
- // Set a "global" var.
- var that = this
- this.foods.forEach(function(item) {
- console.log("I'm " + that.name + "and I ate " + item);
- });
- ```
- ```js
- // Use arrow function
- this.foods.forEach((item) => {
- console.log("I'm " + this.name + "and I ate " + item);
- });
- ```
- ### Log results to HTML File
- ```js
- console.log = function() {
- var args = Array.prototype.slice.call(arguments, 1);
- document.write('<strong>' + arguments[0] + '</strong> ')
- document.write(args.join(','))
- document.write('<br />')
- }
- ```
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement