diff --git a/src/ol/Feature.js b/src/ol/Feature.js index 3056896278..9ae3b94303 100644 --- a/src/ol/Feature.js +++ b/src/ol/Feature.js @@ -129,7 +129,7 @@ class Feature extends BaseObject { */ clone() { const clone = new Feature( - this.hasProperties() ? this.getProperties() : undefined + this.hasProperties() ? this.getProperties() : null ); clone.setGeometryName(this.getGeometryName()); const geometry = this.getGeometry(); diff --git a/src/ol/Object.js b/src/ol/Object.js index 90863c8863..c1b62a1c2b 100644 --- a/src/ol/Object.js +++ b/src/ol/Object.js @@ -95,7 +95,7 @@ class BaseObject extends Observable { /** * @private - * @type {!Object} + * @type {?Object} */ this.values_ = null; @@ -199,7 +199,7 @@ class BaseObject extends Observable { const oldValue = this.values_[key]; delete this.values_[key]; if (isEmpty(this.values_)) { - delete this.values_; + this.values_ = null; } if (!opt_silent) { this.notify(key, oldValue); diff --git a/src/ol/events/Target.js b/src/ol/events/Target.js index efd9737725..eea7c1624a 100644 --- a/src/ol/events/Target.js +++ b/src/ol/events/Target.js @@ -40,19 +40,19 @@ class Target extends Disposable { /** * @private - * @type {Object} + * @type {?Object} */ this.pendingRemovals_ = null; /** * @private - * @type {Object} + * @type {?Object} */ this.dispatching_ = null; /** * @private - * @type {Object>} + * @type {?Object>} */ this.listeners_ = null; } @@ -143,7 +143,7 @@ class Target extends Disposable { * @return {Array|undefined} Listeners. */ getListeners(type) { - return this.listeners_ && this.listeners_[type]; + return (this.listeners_ && this.listeners_[type]) || undefined; } /** diff --git a/test/spec/ol/events/eventtarget.test.js b/test/spec/ol/events/eventtarget.test.js index 48ef6c9b3a..90bf63ce59 100644 --- a/test/spec/ol/events/eventtarget.test.js +++ b/test/spec/ol/events/eventtarget.test.js @@ -33,6 +33,11 @@ describe('ol.events.EventTarget', function () { }); target.dispatchEvent('my-event'); }); + it('does not initialize objects in advance', function () { + expect(eventTarget.pendingRemovals_).to.be(null); + expect(eventTarget.dispatching_).to.be(null); + expect(eventTarget.listeners_).to.be(null); + }); }); describe('#hasListener', function () {