123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- var Class = require('./Class');
- var clone = require('./clone');
- var each = require('./each');
- var toArr = require('./toArr');
- exports = Class(
- {
- initialize: function SingleEmitter() {
- this._listeners = [];
- },
- addListener: function(listener) {
- this._listeners.push(listener);
- },
- rmListener: function(listener) {
- var idx = this._listeners.indexOf(listener);
- if (idx > -1) {
- this._listeners.splice(idx, 1);
- }
- },
- rmAllListeners: function() {
- this._listeners = [];
- },
- emit: function() {
- var _this = this;
- var args = toArr(arguments);
- var listeners = clone(this._listeners);
- each(
- listeners,
- function(listener) {
- return listener.apply(_this, args);
- },
- this
- );
- }
- },
- {
- mixin: function(obj) {
- each(
- ['addListener', 'rmListener', 'emit', 'rmAllListeners'],
- function(val) {
- obj[val] = exports.prototype[val];
- }
- );
- obj._listeners = obj._listeners || [];
- }
- }
- );
- module.exports = exports;
|