File tree 1 file changed +4
-4
lines changed
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 ) {
44
44
// set onceEvents hash
45
45
let onceEvents = this . _onceEvents = this . _onceEvents || { } ;
46
46
// set onceListeners object
47
- let onceListeners = onceEvents [ eventName ] = onceEvents [ eventName ] || { } ;
47
+ onceEvents [ eventName ] = onceEvents [ eventName ] || new global . WeakSet ( ) ;
48
48
// set flag
49
- onceListeners [ listener ] = true ;
49
+ onceEvents [ eventName ] . add ( listener ) ;
50
50
51
51
return this ;
52
52
} ;
@@ -74,13 +74,13 @@ proto.emitEvent = function( eventName, args ) {
74
74
let onceListeners = this . _onceEvents && this . _onceEvents [ eventName ] ;
75
75
76
76
for ( let listener of listeners ) {
77
- let isOnce = onceListeners && onceListeners [ listener ] ;
77
+ let isOnce = onceListeners && onceListeners . has ( listener ) ;
78
78
if ( isOnce ) {
79
79
// remove listener
80
80
// remove before trigger to prevent recursion
81
81
this . off ( eventName , listener ) ;
82
82
// unset once flag
83
- delete onceListeners [ listener ] ;
83
+ delete onceListeners . delete ( listener ) ;
84
84
}
85
85
// trigger listener
86
86
listener . apply ( this , args ) ;
You can’t perform that action at this time.
0 commit comments