Оператор все еще будет оцениваться.
Property Accessors
| |
v v
document.body.offsetLeft;
^
|- Identifier Reference
В приведенном выше утверждении вы можете видеть, что document
является идентификатором Reference , который является Первичным выражением.
Затем используется оператор доступа к свойству (.
), также ищите свойство body
и затем свойство offsetLeft
.
Вы не делаете AssignmentExpression
но оператор будет оценен, поскольку ссылка на идентификатор разрешена, а свойства найдены.
Кроме того, хост-объекты могут реализовывать свойства доступа , которые могут иметь логику get
и set
методы, а не просто значения свойств .
В ECMAScript 3 у нас не было возможности создавать свойства доступа , только хост-объектымогли бы реализовать их, но 5-е издание стандарта позволяет нам это делать.
Например, для иллюстрации:
var obj = {};
Object.defineProperty(obj, 'prop', { // ECMAScript 5 method
get: function () {
alert('getter');
}
});
Примечание: Вышеиллюстративный пример работает на IE9 Pre, Firefox 3.7alpha, Chrome 5, и ночные сборки WebKit.
Затем простое выражение в качестве примера заставляет вызывающий метод вызывать:
obj.prop; // alerts "getter"