123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- class EventEmitter {
- constructor() {
- this.__z_e_listeners = {}
- }
- on (evt, handler, context) {
- var handlers = this.__z_e_listeners[evt]
- if (handlers === undefined) {
- handlers = []
- this.__z_e_listeners[evt] = handlers
- }
- var item = {
- handler: handler,
- context: context,
- }
- handlers.push(item)
- return item
- }
- off (evt, handler, context) {
- var handlers = this.__z_e_listeners[evt]
- if (handlers !== undefined) {
- var size = handlers.length
- for (var i = 0; i < size; i++) {
- var item = handlers[i]
- if (item.handler === handler && item.context === context) {
- handlers.splice(i, 1)
- return
- }
- }
- }
- }
- emit (type, event) {
- var hanlders = this.__z_e_listeners[type]
- if (hanlders !== undefined) {
- var size = hanlders.length
- for (var i = 0; i < size; i++) {
- var ef = hanlders[i]
- var handler = ef.handler
- var context = ef.context
- handler.apply(context, [event])
- }
- }
- }
- }
- module.exports = new EventEmitter()
|