diff --git a/src/ol/expression/expressions.js b/src/ol/expression/expressions.js index a8675d1365..7f51393d74 100644 --- a/src/ol/expression/expressions.js +++ b/src/ol/expression/expressions.js @@ -554,17 +554,17 @@ ol.expression.Math.prototype.getRight = function() { * * @constructor * @extends {ol.expression.Expression} - * @param {ol.expression.Expression} expr An expression that resolves to an + * @param {ol.expression.Expression} object An expression that resolves to an * object. * @param {ol.expression.Identifier} property Identifier with name of property. */ -ol.expression.Member = function(expr, property) { +ol.expression.Member = function(object, property) { /** * @type {ol.expression.Expression} * @private */ - this.expr_ = expr; + this.object_ = object; /** * @type {ol.expression.Identifier} @@ -581,7 +581,7 @@ goog.inherits(ol.expression.Member, ol.expression.Expression); */ ol.expression.Member.prototype.evaluate = function(opt_scope, opt_fns, opt_this) { - var obj = this.expr_.evaluate(opt_scope, opt_fns, opt_this); + var obj = this.object_.evaluate(opt_scope, opt_fns, opt_this); if (!goog.isObject(obj)) { throw new Error('Expected member expression to evaluate to an object ' + 'but got ' + obj); @@ -590,6 +590,24 @@ ol.expression.Member.prototype.evaluate = function(opt_scope, opt_fns, }; +/** + * Get the object expression. + * @return {ol.expression.Expression} The object. + */ +ol.expression.Member.prototype.getObject = function() { + return this.object_; +}; + + +/** + * Get the property expression. + * @return {ol.expression.Identifier} The property. + */ +ol.expression.Member.prototype.getProperty = function() { + return this.property_; +}; + + /** * A logical not expression (e.g. `!foo`). diff --git a/test/spec/ol/expression/expressions.test.js b/test/spec/ol/expression/expressions.test.js index ecb85a29fc..588ac2220c 100644 --- a/test/spec/ol/expression/expressions.test.js +++ b/test/spec/ol/expression/expressions.test.js @@ -558,6 +558,19 @@ describe('ol.expression.Member', function() { expect(expr.evaluate(scope)).to.be(42); }); }); + + var object = new ol.expression.Identifier('foo'); + var property = new ol.expression.Identifier('bar'); + var expr = new ol.expression.Member(object, property); + + describe('#getObject()', function() { + expect(expr.getObject()).to.be(object); + }); + + describe('#getProperty()', function() { + expect(expr.getProperty()).to.be(property); + }); + });