File tree Expand file tree Collapse file tree 1 file changed +4
-4
lines changed Expand file tree Collapse file tree 1 file changed +4
-4
lines changed Original file line number Diff line number Diff 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 ) ;
You can’t perform that action at this time.
0 commit comments