4.4. Выражения обращения к свойствам
Выражение обращения к свойству вычисляет значение свойства объекта или элемента массива. В языке JavaScript имеется два способа обращения к свойствам:
выражение . идентификатор выражение [ выражение ]
Первый способ обращения к свойствам заключается в использовании выражения, за которым следуют точка и идентификатор. Выражение определяет объект, а идентификатор - имя требуемого свойства. Первый способ заключается в использовании выражения (объект или массив), за которым следует другое выражение, заключенное в квадратные скобки. Второе выражение определяет имя требуемого свойства или индекс элемента массива. Ниже приводится несколько конкретных примеров:
var о = {x:1,y:{z:3}}; // Пример объекта
var а = [о,4, [5,6]]; // Пример массива, содержащего объект
о.х //свойство x выражения o
о.у.z //свойство z выражения o.y
о["х"] //свойство x объекта o
а[1] // элемент с индексом 1 выражения а
а[2]["1"] // элемент с индексом 1 выражения а[2]
а[0].х //свойство x выражения а[0]
Независимо от способа обращения к свойству первым вычисляется выражение, стоящее перед . или [. Если значением этого выражения является null
или undefined
, возбуждается исключение ТуреЕггог
, потому что эти два значения в JavaScript не имеют свойств. Если значение выражения не является объектом (или массивом), оно будет преобразовано в объект (раздел 3.6). Если за первым выражением следует точка и идентификатор, интерпретатор попытается отыскать значение свойства с именем, совпадающим с идентификатором, которое и станет значением всего выражения. Если за первым выражением следует другое выражение в квадратных скобках, интерпретатор вычислит второе выражение и преобразует его в строку. В этом случае значением всего выражения станет значение свойства, имя которого совпадает со строкой. В любом случае, если свойство с указанным именем не существует, значением выражения обращения к свойству станет значение undefined.
Из двух способов обращения к свойству синтаксис .идентификатор
выглядит проще, но обратите внимание, что этот способ может использоваться, только если именем свойства, к которому выполняется обращение, является допустимый идентификатор, и это имя известно на этапе создания программы. Если имя свойства совпадает с зарезервированным словом, включает пробелы или знаки пунктуации, или когда оно является числом (в случае массивов), необходимо использовать синтаксис с квадратными скобками. Кроме того, квадратные скобки можно использовать, когда имя свойства является не статическим, а результатом некоторых вычислений (пример можно найти в разделе 6.2.1).
Подробнее об объектах и их свойствах рассказывается в главе 6, а массивы и их элементы обсуждаются в главе 7.
Выражение вызова в языке JavaScript служит для вызова (или выполнения) функции или метода. Оно начинается с выражения, возвращающего функцию, идентифицирующего вызываемую функцию. Вслед за выражением получения функции следуют открывающая круглая скобка, список из нуля или более выражений аргументов, разделенных запятыми, и закрывающая круглая скобка. Например:
f(0) // f - выражение функции; 0 - выражение аргумента.
Math.max(x,у,z) // Math.max - функция; x, у и z - аргументы.
a.sort() // a.sort - функция; здесь нет аргументов.
При вычислении выражения вызова первым вычисляется выражение, возвращающее функцию, а затем вычисляются выражения аргументов и создается список значений аргументов. Если значением выражения, возвращающего функцию, не является вызываемый объект, возбуждается исключение ТуреЕггог
. (Все функции являются вызываемыми объектами. Объекты среды выполнения также могут быть вызываемыми, даже если они не являются функциями. Это отличие рассматривается в разделе 8.7.7.) Далее значения аргументов присваиваются в порядке их следования именам параметров, которые указаны в определении функции, после чего выполняется тело функции. Если внутри функции используется инструкция return
, возвращающая некоторое значение, это значение становится значением выражения вызова. В противном случае выражение вызова возвращает значение undefined
. Полное описание механизма вызова функций, включая описание того, что происходит, когда количество выражений аргументов не совпадает с количеством параметров в определении функции, вы найдете в главе 8.
Читать дальше
Конец ознакомительного отрывка
Купить книгу