@@ -87,34 +87,21 @@ EventEmitter.init = function() {
8787const proxyEventsHandler = {
8888 deleteProperty ( { emitter } , prop ) {
8989 const events = emitter [ kEvents ] ;
90- if ( events === undefined )
91- return false ;
92- if ( ! events . has ( prop ) &&
93- typeof prop !== 'string' &&
94- typeof prop !== 'symbol' )
95- prop = String ( prop ) ;
96- return events . delete ( prop ) ;
90+ if ( events !== undefined )
91+ events . delete ( prop ) ;
92+ return true ;
9793 } ,
9894 get ( { emitter } , prop ) {
9995 const events = emitter [ kEvents ] ;
10096 if ( events === undefined )
10197 return ;
102- let value = events . get ( prop ) ;
103- if ( value === undefined &&
104- typeof prop !== 'string' &&
105- typeof prop !== 'symbol' )
106- value = events . get ( String ( prop ) ) ;
107- return value ;
98+ return events . get ( prop ) ;
10899 } ,
109100 getOwnPropertyDescriptor ( { emitter } , prop ) {
110101 const events = emitter [ kEvents ] ;
111102 if ( events === undefined )
112103 return undefined ;
113- let value = events . get ( prop ) ;
114- if ( value === undefined &&
115- typeof prop !== 'string' &&
116- typeof prop !== 'symbol' )
117- value = events . get ( String ( prop ) ) ;
104+ const value = events . get ( prop ) ;
118105 if ( value === undefined )
119106 return undefined ;
120107 return {
@@ -131,22 +118,13 @@ const proxyEventsHandler = {
131118 const events = emitter [ kEvents ] ;
132119 if ( events === undefined )
133120 return false ;
134- let has = events . has ( prop ) ;
135- if ( ! has && typeof prop !== 'string' && typeof prop !== 'symbol' )
136- has = events . has ( String ( prop ) ) ;
137- return has ;
121+ return events . has ( prop ) ;
138122 } ,
139123 ownKeys ( { emitter } ) {
140124 const events = emitter [ kEvents ] ;
141- if ( events === undefined )
125+ if ( events === undefined || events . size === 0 )
142126 return [ ] ;
143- const keys = new Array ( events . size ) ;
144- var i = 0 ;
145- for ( var [ key ] of events ) {
146- keys [ i ++ ] = typeof key !== 'string' && typeof key !== 'symbol' ?
147- String ( key ) : key ;
148- }
149- return keys ;
127+ return [ ...events . keys ( ) ] ;
150128 } ,
151129 set ( { emitter } , prop , value ) {
152130 let events = emitter [ kEvents ] ;
@@ -164,7 +142,8 @@ Object.defineProperty(EventEmitter.prototype, '_events', {
164142 const proxy = this [ kEventsProxy ] ;
165143 // The proxy target has to be an empty object with a single configurable
166144 // key, because of rules around Proxy handler.ownKeys behaviour
167- if ( proxy === undefined )
145+ if ( proxy === undefined ||
146+ this [ kEventsProxy ] === Object . getPrototypeOf ( this ) [ kEventsProxy ] )
168147 return this [ kEventsProxy ] = new Proxy ( { emitter : this } ,
169148 proxyEventsHandler ) ;
170149 return proxy ;
0 commit comments