From b48cabee288974d5b4d44d3f573ada469db4e3bb Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Sun, 27 Sep 2015 12:06:12 -0600 Subject: [PATCH] Remove unnecessary goog.isDefAndNotNull() calls --- src/ol/control/fullscreencontrol.js | 6 ++--- src/ol/control/zoomslidercontrol.js | 2 +- src/ol/format/esrijsonformat.js | 31 +++++++++++-------------- src/ol/format/featureformat.js | 2 +- src/ol/format/geojsonformat.js | 2 +- src/ol/format/gml/gml3format.js | 5 ++-- src/ol/format/gml/gmlbaseformat.js | 2 +- src/ol/format/kmlformat.js | 13 +++++------ src/ol/format/topojsonformat.js | 2 +- src/ol/format/wfsformat.js | 6 ++--- src/ol/interaction/drawinteraction.js | 3 +-- src/ol/map.js | 2 +- src/ol/overlay.js | 6 ++--- src/ol/render/box.js | 3 +-- src/ol/render/canvas/canvasimmediate.js | 6 ++--- src/ol/render/canvas/canvasreplay.js | 4 ++-- src/ol/render/webgl/webglimmediate.js | 2 +- src/ol/render/webgl/webglreplay.js | 2 +- src/ol/source/tilearcgisrestsource.js | 4 ++-- 19 files changed, 46 insertions(+), 57 deletions(-) diff --git a/src/ol/control/fullscreencontrol.js b/src/ol/control/fullscreencontrol.js index fbd8b7fa61..b085409540 100644 --- a/src/ol/control/fullscreencontrol.js +++ b/src/ol/control/fullscreencontrol.js @@ -114,11 +114,9 @@ ol.control.FullScreen.prototype.handleFullScreen_ = function() { goog.dom.fullscreen.exitFullScreen(); } else { var target = map.getTarget(); - goog.asserts.assert(goog.isDefAndNotNull(target), - 'target should be defined'); + goog.asserts.assert(target, 'target should be defined'); var element = goog.dom.getElement(target); - goog.asserts.assert(goog.isDefAndNotNull(element), - 'element should be defined'); + goog.asserts.assert(element, 'element should be defined'); if (this.keys_) { goog.dom.fullscreen.requestFullScreenWithKeys(element); } else { diff --git a/src/ol/control/zoomslidercontrol.js b/src/ol/control/zoomslidercontrol.js index d15c8781d8..a98342bd63 100644 --- a/src/ol/control/zoomslidercontrol.js +++ b/src/ol/control/zoomslidercontrol.js @@ -182,7 +182,7 @@ ol.control.ZoomSlider.render = function(mapEvent) { if (goog.isNull(mapEvent.frameState)) { return; } - goog.asserts.assert(goog.isDefAndNotNull(mapEvent.frameState.viewState), + goog.asserts.assert(mapEvent.frameState.viewState, 'viewState should be defined'); if (!this.sliderInitialized_) { this.initSlider_(); diff --git a/src/ol/format/esrijsonformat.js b/src/ol/format/esrijsonformat.js index 74affb0fe7..2863816334 100644 --- a/src/ol/format/esrijsonformat.js +++ b/src/ol/format/esrijsonformat.js @@ -60,15 +60,15 @@ ol.format.EsriJSON.readGeometry_ = function(object, opt_options) { var type; if (goog.isNumber(object.x) && goog.isNumber(object.y)) { type = ol.geom.GeometryType.POINT; - } else if (goog.isDefAndNotNull(object.points)) { + } else if (object.points) { type = ol.geom.GeometryType.MULTI_POINT; - } else if (goog.isDefAndNotNull(object.paths)) { + } else if (object.paths) { if (object.paths.length === 1) { type = ol.geom.GeometryType.LINE_STRING; } else { type = ol.geom.GeometryType.MULTI_LINE_STRING; } - } else if (goog.isDefAndNotNull(object.rings)) { + } else if (object.rings) { var layout = ol.format.EsriJSON.getGeometryLayout_(object); var rings = ol.format.EsriJSON.convertRings_(object.rings, layout); object = /** @type {EsriJSONGeometry} */(goog.object.clone(object)); @@ -149,13 +149,13 @@ ol.format.EsriJSON.readPointGeometry_ = function(object) { goog.asserts.assert(goog.isNumber(object.x), 'object.x should be number'); goog.asserts.assert(goog.isNumber(object.y), 'object.y should be number'); var point; - if (goog.isDefAndNotNull(object.m) && goog.isDefAndNotNull(object.z)) { + if (object.m !== undefined && object.z !== undefined) { point = new ol.geom.Point([object.x, object.y, object.z, object.m], ol.geom.GeometryLayout.XYZM); - } else if (goog.isDefAndNotNull(object.z)) { + } else if (object.z !== undefined) { point = new ol.geom.Point([object.x, object.y, object.z], ol.geom.GeometryLayout.XYZ); - } else if (goog.isDefAndNotNull(object.m)) { + } else if (object.m !== undefined) { point = new ol.geom.Point([object.x, object.y, object.m], ol.geom.GeometryLayout.XYM); } else { @@ -219,8 +219,7 @@ ol.format.EsriJSON.getGeometryLayout_ = function(object) { * @return {ol.geom.Geometry} MultiPoint. */ ol.format.EsriJSON.readMultiPointGeometry_ = function(object) { - goog.asserts.assert(goog.isDefAndNotNull(object.points), - 'object.points should be defined'); + goog.asserts.assert(object.points, 'object.points should be defined'); var layout = ol.format.EsriJSON.getGeometryLayout_(object); return new ol.geom.MultiPoint(object.points, layout); }; @@ -232,7 +231,7 @@ ol.format.EsriJSON.readMultiPointGeometry_ = function(object) { * @return {ol.geom.Geometry} MultiPolygon. */ ol.format.EsriJSON.readMultiPolygonGeometry_ = function(object) { - goog.asserts.assert(goog.isDefAndNotNull(object.rings)); + goog.asserts.assert(object.rings); goog.asserts.assert(object.rings.length > 1, 'object.rings should have length larger than 1'); var layout = ol.format.EsriJSON.getGeometryLayout_(object); @@ -248,7 +247,7 @@ ol.format.EsriJSON.readMultiPolygonGeometry_ = function(object) { * @return {ol.geom.Geometry} Polygon. */ ol.format.EsriJSON.readPolygonGeometry_ = function(object) { - goog.asserts.assert(goog.isDefAndNotNull(object.rings)); + goog.asserts.assert(object.rings); var layout = ol.format.EsriJSON.getGeometryLayout_(object); return new ol.geom.Polygon(object.rings, layout); }; @@ -483,10 +482,9 @@ ol.format.EsriJSON.prototype.readFeatures; ol.format.EsriJSON.prototype.readFeatureFromObject = function( object, opt_options) { var esriJSONFeature = /** @type {EsriJSONFeature} */ (object); - goog.asserts.assert(goog.isDefAndNotNull(esriJSONFeature.geometry) || - goog.isDefAndNotNull(esriJSONFeature.compressedGeometry) || - goog.isDefAndNotNull(esriJSONFeature.attributes), - 'geometry, compressedGeometry or attributes should be defined'); + goog.asserts.assert(esriJSONFeature.geometry || + esriJSONFeature.attributes, + 'geometry or attributes should be defined'); var geometry = ol.format.EsriJSON.readGeometry_(esriJSONFeature.geometry, opt_options); var feature = new ol.Feature(); @@ -516,7 +514,7 @@ ol.format.EsriJSON.prototype.readFeaturesFromObject = function( object, opt_options) { var esriJSONObject = /** @type {EsriJSONObject} */ (object); var options = opt_options ? opt_options : {}; - if (goog.isDefAndNotNull(esriJSONObject.features)) { + if (esriJSONObject.features) { var esriJSONFeatureCollection = /** @type {EsriJSONFeatureCollection} */ (object); /** @type {Array.} */ @@ -573,8 +571,7 @@ ol.format.EsriJSON.prototype.readProjection; */ ol.format.EsriJSON.prototype.readProjectionFromObject = function(object) { var esriJSONObject = /** @type {EsriJSONObject} */ (object); - if (goog.isDefAndNotNull(esriJSONObject.spatialReference) && - goog.isDefAndNotNull(esriJSONObject.spatialReference.wkid)) { + if (esriJSONObject.spatialReference && esriJSONObject.spatialReference.wkid) { var crs = esriJSONObject.spatialReference.wkid; return ol.proj.get('EPSG:' + crs); } else { diff --git a/src/ol/format/featureformat.js b/src/ol/format/featureformat.js index bb3425e209..6f6f58aa1a 100644 --- a/src/ol/format/featureformat.js +++ b/src/ol/format/featureformat.js @@ -67,7 +67,7 @@ ol.format.Feature.prototype.adaptOptions = function(options) { if (options) { updatedOptions = { featureProjection: options.featureProjection, - dataProjection: goog.isDefAndNotNull(options.dataProjection) ? + dataProjection: options.dataProjection ? options.dataProjection : this.defaultDataProjection, rightHanded: options.rightHanded }; diff --git a/src/ol/format/geojsonformat.js b/src/ol/format/geojsonformat.js index 317f9600c9..cb6db7aa0c 100644 --- a/src/ol/format/geojsonformat.js +++ b/src/ol/format/geojsonformat.js @@ -38,7 +38,7 @@ ol.format.GeoJSON = function(opt_options) { * @inheritDoc */ this.defaultDataProjection = ol.proj.get( - goog.isDefAndNotNull(options.defaultDataProjection) ? + options.defaultDataProjection ? options.defaultDataProjection : 'EPSG:4326'); diff --git a/src/ol/format/gml/gml3format.js b/src/ol/format/gml/gml3format.js index a63684dda9..b908744af3 100644 --- a/src/ol/format/gml/gml3format.js +++ b/src/ol/format/gml/gml3format.js @@ -804,7 +804,7 @@ ol.format.GML3.prototype.writeSurfaceOrPolygon_ = var context = objectStack[objectStack.length - 1]; goog.asserts.assert(goog.isObject(context), 'context should be an Object'); var srsName = context['srsName']; - if (node.nodeName !== 'PolygonPatch' && goog.isDefAndNotNull(srsName)) { + if (node.nodeName !== 'PolygonPatch' && srsName) { node.setAttribute('srsName', srsName); } if (node.nodeName === 'Polygon' || node.nodeName === 'PolygonPatch') { @@ -834,8 +834,7 @@ ol.format.GML3.prototype.writeCurveOrLineString_ = var context = objectStack[objectStack.length - 1]; goog.asserts.assert(goog.isObject(context), 'context should be an Object'); var srsName = context['srsName']; - if (node.nodeName !== 'LineStringSegment' && - goog.isDefAndNotNull(srsName)) { + if (node.nodeName !== 'LineStringSegment' && srsName) { node.setAttribute('srsName', srsName); } if (node.nodeName === 'LineString' || diff --git a/src/ol/format/gml/gmlbaseformat.js b/src/ol/format/gml/gmlbaseformat.js index 8e50f6d1f1..5f7cc9826a 100644 --- a/src/ol/format/gml/gmlbaseformat.js +++ b/src/ol/format/gml/gmlbaseformat.js @@ -116,7 +116,7 @@ ol.format.GMLBase.prototype.readFeaturesInternal = function(node, objectStack) { var featureType = context['featureType']; var featureNS = context['featureNS']; var i, ii, prefix = 'p', defaultPrefix = 'p0'; - if (!featureType && goog.isDefAndNotNull(node.childNodes)) { + if (!featureType && node.childNodes) { featureType = [], featureNS = {}; for (i = 0, ii = node.childNodes.length; i < ii; ++i) { var child = node.childNodes[i]; diff --git a/src/ol/format/kmlformat.js b/src/ol/format/kmlformat.js index 79c9d5f2e3..6c870684a1 100644 --- a/src/ol/format/kmlformat.js +++ b/src/ol/format/kmlformat.js @@ -394,7 +394,7 @@ ol.format.KML.readFlatCoordinates_ = function(node) { */ ol.format.KML.readStyleUrl_ = function(node) { var s = goog.string.trim(ol.xml.getAllTextContent(node, false)); - if (goog.isDefAndNotNull(node.baseURI)) { + if (node.baseURI) { return goog.Uri.resolve(node.baseURI, s).toString(); } else { return s; @@ -410,7 +410,7 @@ ol.format.KML.readStyleUrl_ = function(node) { */ ol.format.KML.readURI_ = function(node) { var s = ol.xml.getAllTextContent(node, false); - if (goog.isDefAndNotNull(node.baseURI)) { + if (node.baseURI) { return goog.Uri.resolve(node.baseURI, goog.string.trim(s)).toString(); } else { return goog.string.trim(s); @@ -980,8 +980,7 @@ ol.format.KML.readPolygon_ = function(node, objectStack) { var flatLinearRings = ol.xml.pushParseAndPop( /** @type {Array.>} */ ([null]), ol.format.KML.FLAT_LINEAR_RINGS_PARSERS_, node, objectStack); - if (goog.isDefAndNotNull(flatLinearRings) && - !goog.isNull(flatLinearRings[0])) { + if (flatLinearRings && !goog.isNull(flatLinearRings[0])) { var polygon = new ol.geom.Polygon(null); var flatCoordinates = flatLinearRings[0]; var ends = [flatCoordinates.length]; @@ -1721,7 +1720,7 @@ ol.format.KML.prototype.readSharedStyle_ = function(node, objectStack) { var style = ol.format.KML.readStyle_(node, objectStack); if (style) { var styleUri; - if (goog.isDefAndNotNull(node.baseURI)) { + if (node.baseURI) { styleUri = goog.Uri.resolve(node.baseURI, '#' + id).toString(); } else { styleUri = '#' + id; @@ -1751,7 +1750,7 @@ ol.format.KML.prototype.readSharedStyleMap_ = function(node, objectStack) { return; } var styleUri; - if (goog.isDefAndNotNull(node.baseURI)) { + if (node.baseURI) { styleUri = goog.Uri.resolve(node.baseURI, '#' + id).toString(); } else { styleUri = '#' + id; @@ -2267,7 +2266,7 @@ ol.format.KML.writePlacemark_ = function(node, feature, objectStack) { var /** @type {ol.xml.NodeStackItem} */ context = {node: node}; // set id - if (goog.isDefAndNotNull(feature.getId())) { + if (feature.getId()) { node.setAttribute('id', feature.getId()); } diff --git a/src/ol/format/topojsonformat.js b/src/ol/format/topojsonformat.js index d8a30b34e5..ae275793cd 100644 --- a/src/ol/format/topojsonformat.js +++ b/src/ol/format/topojsonformat.js @@ -34,7 +34,7 @@ ol.format.TopoJSON = function(opt_options) { * @inheritDoc */ this.defaultDataProjection = ol.proj.get( - goog.isDefAndNotNull(options.defaultDataProjection) ? + options.defaultDataProjection ? options.defaultDataProjection : 'EPSG:4326'); }; diff --git a/src/ol/format/wfsformat.js b/src/ol/format/wfsformat.js index 19c316a329..63dd77bfb1 100644 --- a/src/ol/format/wfsformat.js +++ b/src/ol/format/wfsformat.js @@ -475,7 +475,7 @@ ol.format.WFS.writeProperty_ = function(node, pair, objectStack) { var name = ol.xml.createElementNS('http://www.opengis.net/wfs', 'Name'); node.appendChild(name); ol.format.XSD.writeStringTextNode(name, pair.name); - if (goog.isDefAndNotNull(pair.value)) { + if (pair.value !== undefined && pair.value !== null) { var value = ol.xml.createElementNS('http://www.opengis.net/wfs', 'Value'); node.appendChild(value); if (pair.value instanceof ol.geom.Geometry) { @@ -768,8 +768,8 @@ ol.format.WFS.prototype.readProjectionFromNode = function(node) { goog.asserts.assert(node.localName == 'FeatureCollection', 'localName should be FeatureCollection'); - if (goog.isDefAndNotNull(node.firstElementChild) && - goog.isDefAndNotNull(node.firstElementChild.firstElementChild)) { + if (node.firstElementChild && + node.firstElementChild.firstElementChild) { node = node.firstElementChild.firstElementChild; for (var n = node.firstElementChild; !goog.isNull(n); n = n.nextElementSibling) { diff --git a/src/ol/interaction/drawinteraction.js b/src/ol/interaction/drawinteraction.js index a1cadd6e08..a0f1ff7c4c 100644 --- a/src/ol/interaction/drawinteraction.js +++ b/src/ol/interaction/drawinteraction.js @@ -723,8 +723,7 @@ ol.interaction.Draw.prototype.extend = function(feature) { var geometry = feature.getGeometry(); goog.asserts.assert(this.mode_ == ol.interaction.DrawMode.LINE_STRING, 'interaction mode must be "line"'); - goog.asserts.assert(goog.isDefAndNotNull(geometry), - 'feature must have a geometry'); + goog.asserts.assert(geometry, 'feature must have a geometry'); goog.asserts.assert(geometry.getType() == ol.geom.GeometryType.LINE_STRING, 'feature geometry must be a line string'); var lineString = /** @type {ol.geom.LineString} */ (geometry); diff --git a/src/ol/map.js b/src/ol/map.js index 5ababe54b6..f57a488922 100644 --- a/src/ol/map.js +++ b/src/ol/map.js @@ -1151,7 +1151,7 @@ ol.Map.prototype.isDef = function() { return false; } var size = this.getSize(); - if (!goog.isDefAndNotNull(size) || size[0] <= 0 || size[1] <= 0) { + if (!size || size[0] <= 0 || size[1] <= 0) { return false; } var view = this.getView(); diff --git a/src/ol/overlay.js b/src/ol/overlay.js index 7e60413223..1d85f00566 100644 --- a/src/ol/overlay.js +++ b/src/ol/overlay.js @@ -372,8 +372,7 @@ ol.Overlay.prototype.panIntoView_ = function() { var mapRect = this.getRect_(map.getTargetElement(), map.getSize()); var element = this.getElement(); - goog.asserts.assert(goog.isDefAndNotNull(element), - 'element should be defined'); + goog.asserts.assert(element, 'element should be defined'); var overlayRect = this.getRect_(element, [ol.dom.outerWidth(element), ol.dom.outerHeight(element)]); @@ -428,8 +427,7 @@ ol.Overlay.prototype.panIntoView_ = function() { * @private */ ol.Overlay.prototype.getRect_ = function(element, size) { - goog.asserts.assert(goog.isDefAndNotNull(element), - 'element should be defined'); + goog.asserts.assert(element, 'element should be defined'); goog.asserts.assert(size !== undefined, 'size should be defined'); var offset = goog.style.getPageOffset(element); diff --git a/src/ol/render/box.js b/src/ol/render/box.js index 13b2ac4044..59bc2aae9a 100644 --- a/src/ol/render/box.js +++ b/src/ol/render/box.js @@ -96,8 +96,7 @@ ol.render.Box.prototype.disposeInternal = function() { */ ol.render.Box.prototype.handleMapPostCompose_ = function(event) { var geometry = this.geometry_; - goog.asserts.assert(goog.isDefAndNotNull(geometry), - 'geometry should be defined'); + goog.asserts.assert(geometry, 'geometry should be defined'); var style = this.style_; goog.asserts.assert(!goog.isNull(style), 'style should not be null'); // use drawAsync(Infinity) to draw above everything diff --git a/src/ol/render/canvas/canvasimmediate.js b/src/ol/render/canvas/canvasimmediate.js index 6f30e5820f..7706ab0227 100644 --- a/src/ol/render/canvas/canvasimmediate.js +++ b/src/ol/render/canvas/canvasimmediate.js @@ -480,7 +480,7 @@ ol.render.canvas.Immediate.prototype.drawCircleGeometry = */ ol.render.canvas.Immediate.prototype.drawFeature = function(feature, style) { var geometry = style.getGeometryFunction()(feature); - if (!goog.isDefAndNotNull(geometry) || + if (!geometry || !ol.extent.intersects(this.extent_, geometry.getExtent())) { return; } @@ -874,7 +874,7 @@ ol.render.canvas.Immediate.prototype.setFillStrokeStyle = this.strokeState_ = { lineCap: strokeStyleLineCap !== undefined ? strokeStyleLineCap : ol.render.canvas.defaultLineCap, - lineDash: goog.isDefAndNotNull(strokeStyleLineDash) ? + lineDash: strokeStyleLineDash ? strokeStyleLineDash : ol.render.canvas.defaultLineDash, lineJoin: strokeStyleLineJoin !== undefined ? strokeStyleLineJoin : ol.render.canvas.defaultLineJoin, @@ -963,7 +963,7 @@ ol.render.canvas.Immediate.prototype.setTextStyle = function(textStyle) { this.textStrokeState_ = { lineCap: textStrokeStyleLineCap !== undefined ? textStrokeStyleLineCap : ol.render.canvas.defaultLineCap, - lineDash: goog.isDefAndNotNull(textStrokeStyleLineDash) ? + lineDash: textStrokeStyleLineDash ? textStrokeStyleLineDash : ol.render.canvas.defaultLineDash, lineJoin: textStrokeStyleLineJoin !== undefined ? textStrokeStyleLineJoin : ol.render.canvas.defaultLineJoin, diff --git a/src/ol/render/canvas/canvasreplay.js b/src/ol/render/canvas/canvasreplay.js index 7948cc3edb..51e8e693ef 100644 --- a/src/ol/render/canvas/canvasreplay.js +++ b/src/ol/render/canvas/canvasreplay.js @@ -259,7 +259,7 @@ ol.render.canvas.Replay.prototype.replay_ = function( feature = /** @type {ol.Feature} */ (instruction[1]); var featureUid = goog.getUid(feature).toString(); if (skippedFeaturesHash[featureUid] !== undefined || - !goog.isDefAndNotNull(feature.getGeometry())) { + !feature.getGeometry()) { i = /** @type {number} */ (instruction[2]); } else if (opt_hitExtent !== undefined && !ol.extent.intersects( /** @type {Array} */ (opt_hitExtent), @@ -1728,7 +1728,7 @@ ol.render.canvas.TextReplay.prototype.setTextStyle = function(textStyle) { var textStrokeStyleMiterLimit = textStrokeStyle.getMiterLimit(); var lineCap = textStrokeStyleLineCap !== undefined ? textStrokeStyleLineCap : ol.render.canvas.defaultLineCap; - var lineDash = goog.isDefAndNotNull(textStrokeStyleLineDash) ? + var lineDash = textStrokeStyleLineDash ? textStrokeStyleLineDash.slice() : ol.render.canvas.defaultLineDash; var lineJoin = textStrokeStyleLineJoin !== undefined ? textStrokeStyleLineJoin : ol.render.canvas.defaultLineJoin; diff --git a/src/ol/render/webgl/webglimmediate.js b/src/ol/render/webgl/webglimmediate.js index ae38988c94..d337ae5214 100644 --- a/src/ol/render/webgl/webglimmediate.js +++ b/src/ol/render/webgl/webglimmediate.js @@ -126,7 +126,7 @@ ol.render.webgl.Immediate.prototype.drawCircleGeometry = */ ol.render.webgl.Immediate.prototype.drawFeature = function(feature, style) { var geometry = style.getGeometryFunction()(feature); - if (!goog.isDefAndNotNull(geometry) || + if (!geometry || !ol.extent.intersects(this.extent_, geometry.getExtent())) { return; } diff --git a/src/ol/render/webgl/webglreplay.js b/src/ol/render/webgl/webglreplay.js index 3bffb7c0b4..07d4090171 100644 --- a/src/ol/render/webgl/webglreplay.js +++ b/src/ol/render/webgl/webglreplay.js @@ -821,7 +821,7 @@ ol.render.webgl.ImageReplay.prototype.drawHitDetectionReplayOneByOne_ = featureUid = goog.getUid(feature).toString(); if (skippedFeaturesHash[featureUid] === undefined && - goog.isDefAndNotNull(feature.getGeometry()) && + feature.getGeometry() && (opt_hitExtent === undefined || ol.extent.intersects( /** @type {Array} */ (opt_hitExtent), feature.getGeometry().getExtent()))) { diff --git a/src/ol/source/tilearcgisrestsource.js b/src/ol/source/tilearcgisrestsource.js index 663574695c..97b031056c 100644 --- a/src/ol/source/tilearcgisrestsource.js +++ b/src/ol/source/tilearcgisrestsource.js @@ -56,7 +56,7 @@ ol.source.TileArcGISRest = function(opt_options) { * @private * @type {!Array.} */ - this.urls_ = goog.isDefAndNotNull(urls) ? urls : []; + this.urls_ = urls || []; /** * @private @@ -184,7 +184,7 @@ ol.source.TileArcGISRest.prototype.setUrl = function(url) { * @api stable */ ol.source.TileArcGISRest.prototype.setUrls = function(urls) { - this.urls_ = goog.isDefAndNotNull(urls) ? urls : []; + this.urls_ = urls || []; this.changed(); };