初始化
This commit is contained in:
48
uni_modules/UniDevTools/node_modules/licia/SingleEmitter.js
generated
vendored
Normal file
48
uni_modules/UniDevTools/node_modules/licia/SingleEmitter.js
generated
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
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;
|
||||
Reference in New Issue
Block a user