Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | /** * @description pubsub库 * @author SoldierAb * @since 18-12-05 */ class PubSub { constructor() { this.handlers = {}; } on(type, listener) { //添加事件 if (!(type in this.handlers)) { this.handlers[type] = []; } this.handlers[type].push(listener); } off(type, listener) { //解除事件 let i, position = -1, list = this.handlers[type], length = this.handlers[type]?this.handlers[type].length:0; for (i = 0; i < length; i++) { if (list[i] === listener) { position = i; break; } } if (position === -1) { return; } if (length === 1) { delete this.handlers[type]; } else { this.handlers[type].splice(position, 1); } } emit(type) { //触发事件 let args = Array.prototype.slice.call(arguments, 1), i, list = this.handlers[type], // length = this.handlers[type].length; length = this.handlers[type]?this.handlers[type].length:0; for (i = 0; i < length; i++) { list[i].apply(this, args); } } } export default PubSub; |