@@ -87,34 +87,21 @@ EventEmitter.init = function() {
87
87
const proxyEventsHandler = {
88
88
deleteProperty ( { emitter } , prop ) {
89
89
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 ;
97
93
} ,
98
94
get ( { emitter } , prop ) {
99
95
const events = emitter [ kEvents ] ;
100
96
if ( events === undefined )
101
97
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 ) ;
108
99
} ,
109
100
getOwnPropertyDescriptor ( { emitter } , prop ) {
110
101
const events = emitter [ kEvents ] ;
111
102
if ( events === undefined )
112
103
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 ) ;
118
105
if ( value === undefined )
119
106
return undefined ;
120
107
return {
@@ -131,22 +118,13 @@ const proxyEventsHandler = {
131
118
const events = emitter [ kEvents ] ;
132
119
if ( events === undefined )
133
120
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 ) ;
138
122
} ,
139
123
ownKeys ( { emitter } ) {
140
124
const events = emitter [ kEvents ] ;
141
- if ( events === undefined )
125
+ if ( events === undefined || events . size === 0 )
142
126
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 ( ) ] ;
150
128
} ,
151
129
set ( { emitter } , prop , value ) {
152
130
let events = emitter [ kEvents ] ;
@@ -164,7 +142,8 @@ Object.defineProperty(EventEmitter.prototype, '_events', {
164
142
const proxy = this [ kEventsProxy ] ;
165
143
// The proxy target has to be an empty object with a single configurable
166
144
// key, because of rules around Proxy handler.ownKeys behaviour
167
- if ( proxy === undefined )
145
+ if ( proxy === undefined ||
146
+ this [ kEventsProxy ] === Object . getPrototypeOf ( this ) [ kEventsProxy ] )
168
147
return this [ kEventsProxy ] = new Proxy ( { emitter : this } ,
169
148
proxyEventsHandler ) ;
170
149
return proxy ;
0 commit comments