parent
80b87ef2b2
commit
7a8b046396
@ -1,70 +1,74 @@ |
|||||||
'use strict' |
'use strict' |
||||||
|
|
||||||
function eventManager () { |
export class eventManager { |
||||||
this.registered = {} |
|
||||||
this.anonymous = {} |
|
||||||
} |
|
||||||
|
|
||||||
/* |
registered |
||||||
* Unregister a listener. |
anonymous |
||||||
* Note that if obj is a function. the unregistration will be applied to the dummy obj {}. |
|
||||||
* |
constructor() { |
||||||
* @param {String} eventName - the event name |
this.registered = {} |
||||||
* @param {Object or Func} obj - object that will listen on this event |
this.anonymous = {} |
||||||
* @param {Func} func - function of the listeners that will be executed |
|
||||||
*/ |
|
||||||
eventManager.prototype.unregister = function (eventName, obj, func) { |
|
||||||
if (!this.registered[eventName]) { |
|
||||||
return |
|
||||||
} |
|
||||||
if (obj instanceof Function) { |
|
||||||
func = obj |
|
||||||
obj = this.anonymous |
|
||||||
} |
} |
||||||
for (let reg in this.registered[eventName]) { |
|
||||||
if (this.registered[eventName][reg].obj === obj && this.registered[eventName][reg].func === func) { |
/* |
||||||
this.registered[eventName].splice(reg, 1) |
* Unregister a listener. |
||||||
|
* Note that if obj is a function. the unregistration will be applied to the dummy obj {}. |
||||||
|
* |
||||||
|
* @param {String} eventName - the event name |
||||||
|
* @param {Object or Func} obj - object that will listen on this event |
||||||
|
* @param {Func} func - function of the listeners that will be executed |
||||||
|
*/ |
||||||
|
unregister (eventName, obj, func) { |
||||||
|
if (!this.registered[eventName]) { |
||||||
|
return |
||||||
|
} |
||||||
|
if (obj instanceof Function) { |
||||||
|
func = obj |
||||||
|
obj = this.anonymous |
||||||
|
} |
||||||
|
for (let reg in this.registered[eventName]) { |
||||||
|
if (this.registered[eventName][reg].obj === obj && this.registered[eventName][reg].func === func) { |
||||||
|
this.registered[eventName].splice(reg, 1) |
||||||
|
} |
||||||
} |
} |
||||||
} |
} |
||||||
} |
|
||||||
|
|
||||||
/* |
/* |
||||||
* Register a new listener. |
* Register a new listener. |
||||||
* Note that if obj is a function, the function registration will be associated with the dummy object {} |
* Note that if obj is a function, the function registration will be associated with the dummy object {} |
||||||
* |
* |
||||||
* @param {String} eventName - the event name |
* @param {String} eventName - the event name |
||||||
* @param {Object or Func} obj - object that will listen on this event |
* @param {Object or Func} obj - object that will listen on this event |
||||||
* @param {Func} func - function of the listeners that will be executed |
* @param {Func} func - function of the listeners that will be executed |
||||||
*/ |
*/ |
||||||
eventManager.prototype.register = function (eventName, obj, func) { |
register (eventName, obj, func) { |
||||||
if (!this.registered[eventName]) { |
if (!this.registered[eventName]) { |
||||||
this.registered[eventName] = [] |
this.registered[eventName] = [] |
||||||
} |
} |
||||||
if (obj instanceof Function) { |
if (obj instanceof Function) { |
||||||
func = obj |
func = obj |
||||||
obj = this.anonymous |
obj = this.anonymous |
||||||
|
} |
||||||
|
this.registered[eventName].push({ |
||||||
|
obj: obj, |
||||||
|
func: func |
||||||
|
}) |
||||||
} |
} |
||||||
this.registered[eventName].push({ |
|
||||||
obj: obj, |
|
||||||
func: func |
|
||||||
}) |
|
||||||
} |
|
||||||
|
|
||||||
/* |
/* |
||||||
* trigger event. |
* trigger event. |
||||||
* Every listener have their associated function executed |
* Every listener have their associated function executed |
||||||
* |
* |
||||||
* @param {String} eventName - the event name |
* @param {String} eventName - the event name |
||||||
* @param {Array}j - argument that will be passed to the executed function. |
* @param {Array}j - argument that will be passed to the executed function. |
||||||
*/ |
*/ |
||||||
eventManager.prototype.trigger = function (eventName, args) { |
trigger (eventName, args) { |
||||||
if (!this.registered[eventName]) { |
if (!this.registered[eventName]) { |
||||||
return |
return |
||||||
} |
} |
||||||
for (let listener in this.registered[eventName]) { |
for (let listener in this.registered[eventName]) { |
||||||
const l = this.registered[eventName][listener] |
const l = this.registered[eventName][listener] |
||||||
l.func.apply(l.obj === this.anonymous ? {} : l.obj, args) |
l.func.apply(l.obj === this.anonymous ? {} : l.obj, args) |
||||||
|
} |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
module.exports = eventManager |
|
Loading…
Reference in new issue