1 |
|
2 |
|
3 |
|
4 |
|
5 | function EventDispatcher() {}
|
6 |
|
7 | Object.assign( EventDispatcher.prototype, {
|
8 |
|
9 | addEventListener: function ( type, listener ) {
|
10 |
|
11 | if ( this._listeners === undefined ) this._listeners = {};
|
12 |
|
13 | var listeners = this._listeners;
|
14 |
|
15 | if ( listeners[ type ] === undefined ) {
|
16 |
|
17 | listeners[ type ] = [];
|
18 |
|
19 | }
|
20 |
|
21 | if ( listeners[ type ].indexOf( listener ) === - 1 ) {
|
22 |
|
23 | listeners[ type ].push( listener );
|
24 |
|
25 | }
|
26 |
|
27 | },
|
28 |
|
29 | hasEventListener: function ( type, listener ) {
|
30 |
|
31 | if ( this._listeners === undefined ) return false;
|
32 |
|
33 | var listeners = this._listeners;
|
34 |
|
35 | return listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1;
|
36 |
|
37 | },
|
38 |
|
39 | removeEventListener: function ( type, listener ) {
|
40 |
|
41 | if ( this._listeners === undefined ) return;
|
42 |
|
43 | var listeners = this._listeners;
|
44 | var listenerArray = listeners[ type ];
|
45 |
|
46 | if ( listenerArray !== undefined ) {
|
47 |
|
48 | var index = listenerArray.indexOf( listener );
|
49 |
|
50 | if ( index !== - 1 ) {
|
51 |
|
52 | listenerArray.splice( index, 1 );
|
53 |
|
54 | }
|
55 |
|
56 | }
|
57 |
|
58 | },
|
59 |
|
60 | dispatchEvent: function ( event ) {
|
61 |
|
62 | if ( this._listeners === undefined ) return;
|
63 |
|
64 | var listeners = this._listeners;
|
65 | var listenerArray = listeners[ event.type ];
|
66 |
|
67 | if ( listenerArray !== undefined ) {
|
68 |
|
69 | event.target = this;
|
70 |
|
71 | var array = listenerArray.slice( 0 );
|
72 |
|
73 | for ( var i = 0, l = array.length; i < l; i ++ ) {
|
74 |
|
75 | array[ i ].call( this, event );
|
76 |
|
77 | }
|
78 |
|
79 | }
|
80 |
|
81 | }
|
82 |
|
83 | } );
|
84 |
|
85 |
|
86 | export { EventDispatcher };
|