Object.property
object["property"]
Важное различие между этими двумя синтаксисами, на которое следует обратить внимание, состоит в том, что в первом варианте имя свойства представляет собой идентификатор, а во втором – строку.
В Java, C, C++ и подобных языках со строгой типизацией объект может иметь только фиксированное число свойств, и имена этих свойств должны быть определены заранее. Поскольку JavaScript – слабо типизированный язык, к нему данное правило неприменимо; программа может создавать любое количество свойств в любом объекте. Однако в случае использования оператора «точка» для доступа к свойству объекта имя свойства задается идентификатором. Идентификаторы должны быть частью текста JavaScript-программы – они не являются типом данных и ими нельзя манипулировать из программы.
В то же время при обращении к свойству объекта с помощью нотации массивов [] имя свойства задается в виде строки. Строки в JavaScript – это тип данных, поэтому они могут создаватьсяиизменятьсяво время работы программы. И поэтому в JavaScript можно, например, написать следующий код:
var addr = "";
for(i = 0; i < 4; i++) {
addr += customer["address" + i] + '\n';
}
В этом фрагменте читаются и объединяются в одну строку свойства address0, address1, address2 и address3 объекта customer.
Когда объект используется в такой форме, его часто называют ассоциативным массивом – структурой данных, позволяющей связывать произвольные значения с произвольными строками.
Нередко для описания этой ситуации используется термин отображение (map): JavaScript-объекты отображают строки (имена свойств) на их значения.
Использование точки (.) для доступа к свойствам делает их похожими на статические объекты в языках C++ и Java, и они прекрасно работают в этой роли. Но они также предоставляют мощное средство для связи значений с произвольными строками.
Дата добавления: 2015-08-01; просмотров: 552;