From a6e21eaf4090c11d5251423089516e4742f16bc9 Mon Sep 17 00:00:00 2001 From: Dahan Gong Date: Fri, 13 Jan 2017 19:23:37 +0800 Subject: [PATCH] allow Eventable.off to remove a group of listeners It may do this when the argument `listener` is `undefined`. --- src/Eventable.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/Eventable.js b/src/Eventable.js index cb3433f4d..a7976b954 100644 --- a/src/Eventable.js +++ b/src/Eventable.js @@ -36,11 +36,11 @@ class Eventable { on (eventType, listener) { // if this type of event was never bound - if (!(eventType in this)) { - this[eventType] = [listener]; + if (this[eventType]) { + this[eventType].push(listener); } else { - this[eventType].push(listener); + this[eventType] = [listener]; } } @@ -50,7 +50,11 @@ class Eventable { const index = eventList? indexOf(eventList, listener) : -1; if (index !== -1) { - this[eventType].splice(index, 1); + eventList.splice(index, 1); + } + let undef; + if (eventList && eventList.length === 0 || undef === listener) { + this[eventType] = undef; } } }