From 9fda86afbe36c11bfaed26b010a4eeb11baf9793 Mon Sep 17 00:00:00 2001 From: Robert Wagner Date: Thu, 23 Aug 2018 15:04:26 -0400 Subject: [PATCH 1/2] Reduce Evented complexity --- src/js/evented.js | 44 ++++++++++++++++---------------------------- 1 file changed, 16 insertions(+), 28 deletions(-) diff --git a/src/js/evented.js b/src/js/evented.js index bed70c3fc..c57b5a01d 100644 --- a/src/js/evented.js +++ b/src/js/evented.js @@ -1,15 +1,13 @@ -export class Evented { - constructor(/* options = {}*/) { - // TODO: do we need this empty constructor? - } +import _ from 'lodash'; +export class Evented { on(event, handler, ctx) { const once = arguments.length <= 3 || arguments[3] === undefined ? false : arguments[3]; - if (typeof this.bindings === 'undefined') { + if (_.isUndefined(this.bindings)) { this.bindings = {}; } - if (typeof this.bindings[event] === 'undefined') { + if (_.isUndefined(this.bindings[event])) { this.bindings[event] = []; } this.bindings[event].push({ handler, ctx, once }); @@ -20,51 +18,41 @@ export class Evented { } off(event, handler) { - if (typeof this.bindings === 'undefined' || typeof this.bindings[event] === 'undefined') { + if (_.isUndefined(this.bindings) || _.isUndefined(this.bindings[event])) { return false; } - if (typeof handler === 'undefined') { + if (_.isUndefined(handler)) { delete this.bindings[event]; } else { - let i = 0; - while (i < this.bindings[event].length) { - if (this.bindings[event][i].handler === handler) { - this.bindings[event].splice(i, 1); - } else { - ++i; + this.bindings[event].forEach((binding, index) => { + if (binding.handler === handler) { + this.bindings[event].splice(index, 1); } - } + }); } } trigger(event) { - if (typeof this.bindings !== 'undefined' && this.bindings[event]) { + if (!_.isUndefined(this.bindings) && this.bindings[event]) { const _len = arguments.length; const args = Array(_len > 1 ? _len - 1 : 0); - let i = 0; for (let _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key]; } - while (i < this.bindings[event].length) { - const _bindings$event$i = this.bindings[event][i]; - const { ctx, handler, once } = _bindings$event$i; + this.bindings[event].forEach((binding, index) => { + const { ctx, handler, once } = binding; - let context = ctx; - if (typeof context === 'undefined') { - context = this; - } + const context = ctx || this; handler.apply(context, args); if (once) { - this.bindings[event].splice(i, 1); - } else { - ++i; + this.bindings[event].splice(index, 1); } - } + }); } } From ecc293059fb4f948cbc92b5e6be4cd85b3ae1482 Mon Sep 17 00:00:00 2001 From: Robert Wagner Date: Thu, 23 Aug 2018 15:21:17 -0400 Subject: [PATCH 2/2] Remove more complexity --- src/js/evented.js | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/js/evented.js b/src/js/evented.js index c57b5a01d..df45bf926 100644 --- a/src/js/evented.js +++ b/src/js/evented.js @@ -35,12 +35,7 @@ export class Evented { trigger(event) { if (!_.isUndefined(this.bindings) && this.bindings[event]) { - const _len = arguments.length; - const args = Array(_len > 1 ? _len - 1 : 0); - - for (let _key = 1; _key < _len; _key++) { - args[_key - 1] = arguments[_key]; - } + const args = _.drop(arguments); this.bindings[event].forEach((binding, index) => { const { ctx, handler, once } = binding;