Skip to content

Commit ac2c64f

Browse files
committed
Use WeakSet for safe check
1 parent 20fc136 commit ac2c64f

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

ev-emitter.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,9 @@ proto.once = function( eventName, listener ) {
4444
// set onceEvents hash
4545
let onceEvents = this._onceEvents = this._onceEvents || {};
4646
// set onceListeners object
47-
let onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {};
47+
onceEvents[ eventName ] = onceEvents[ eventName ] || new global.WeakSet();
4848
// set flag
49-
onceListeners[ listener ] = true;
49+
onceEvents[ eventName ].add( listener );
5050

5151
return this;
5252
};
@@ -74,13 +74,13 @@ proto.emitEvent = function( eventName, args ) {
7474
let onceListeners = this._onceEvents && this._onceEvents[ eventName ];
7575

7676
for ( let listener of listeners ) {
77-
let isOnce = onceListeners && onceListeners[ listener ];
77+
let isOnce = onceListeners && onceListeners.has( listener );
7878
if ( isOnce ) {
7979
// remove listener
8080
// remove before trigger to prevent recursion
8181
this.off( eventName, listener );
8282
// unset once flag
83-
delete onceListeners[ listener ];
83+
delete onceListeners.delete( listener );
8484
}
8585
// trigger listener
8686
listener.apply( this, args );

0 commit comments

Comments
 (0)