Как отмечалось в главе 3, можно обращаться к элементам массива посредством квадратных скобок ([]), а к элементам объекта – посредством точки (.). И квад_ ратные скобки, и точка рассматриваются в JavaScript как операторы.
Оператору «точка» в качестве левого операнда требуется объект, а в качестве правого – идентификатор (имя свойства). Правый операнд не может быть стро_ кой или переменной, содержащей строку; он должен быть точным именем свой_ ства или метода без каких_либо кавычек. Вот несколько примеров:
document.lastModified
navigator.appName
frames[0].length document.write("hello world")
Если указанное свойство в объекте отсутствует, интерпретатор JavaScript не ге_ нерирует ошибку, а возвращает в качестве значения выражения undefined.
Большинство операторов допускают произвольные выражения для всех своих операндов, если только тип операнда в данном случае допустим. Оператор «точ_
98 Глава 5. Выражения и операторы
ка» представляет собой исключение: правый операнд должен быть идентифика_ тором. Ничего другого не допускается.
Оператор [] обеспечивает доступ к элементам массива. Он также обеспечивает доступ к свойствам объекта без ограничений, накладываемых на правый опе_ ранд оператора «точка». Если первый операнд (указанный перед левой скобкой) ссылается на массив, то второй операнд (указанный между скобками) должен быть выражением, имеющим целое значение. Например:
frames[1] document.forms[i + j]
document.forms[i].elements[j++]
Если первый операнд оператора [] представляет собой ссылку на объект, то вто_ рой должен быть выражением, результатом которого является строка, соответ_ ствующая имени свойства объекта. Обратите внимание: в этом случае второй операнд представляет собой строку, а не идентификатор. Она может быть либо константой, заключенной в кавычки, либо переменной или выражением, ссы_ лающимся на строку. Например:
document["lastModified"]
frames[0]['length'] data["val" + i]
Оператор [] обычно применяется для обращения к элементам массива. Для дос_ тупа к свойствам объекта он менее удобен, чем оператор «точка», т. к. требует заключения имени свойства в кавычки. Однако когда объект выступает в роли ассоциативного массива, а имена свойств генерируются динамически, оператор «точка» использоваться не может и следует применять оператор []. Чаще всего такая ситуация возникает в случае применения цикла for/in, рассмотренного в главе 6. Например, в следующем фрагменте для вывода имен и значений всех свойств объекта o используются цикл for/in и оператор []:
for (f in o) {
document.write('o.' + f + ' = ' + o[f]); document.write('<br>');