Выразительный JavaScript | страница 35
Свойства
Мы видели много подозрительных выражений вроде >myString.length
(получение длины строки) и >Math.max
(получение максимума) в ранних примерах. Эти выражения используют свойства величин. В первом случае, мы получаем доступ к свойству >length
(длина) переменной >myString
. Во втором — доступ к свойству >max
объекта >Math
(который является набором функций и переменных, связанных с математикой).
Почти у всех переменных в JavaScript есть свойства. Исключения — >null
и >undefined
. Если вы попробуете получить доступ к несуществующим свойствам этих не-величин, получите ошибку:
>null.length;
>// → TypeError: Cannot read property 'length' of null
Два основных способа доступа к свойствам – точка и квадратные скобки. >value.x
и >value[x]
получают доступ к свойству >value
– но не обязательно к одному и тому же. Разница в том, как интерпретируется >x
. При использовании точки запись после точки должна быть именем существующей переменной, и она таким образом напрямую вызывает свойство по имени. При использовании квадратных скобок выражение в скобках вычисляется для получения имени свойства. >value.x
вызывает свойство под именем “x”, а >value[x]
вычисляет выражение >x
и использует результат в качестве имени свойства.
Если вы знаете, что интересующее вас свойство называется “length”, вы пишете >value.length
. Если вы хотите извлечь имя свойства из переменной >i
, вы пишете >value[i]
. А поскольку свойство может иметь любое имя, для доступа к свойству по имени “2” или “Jon Doe” вам придётся использовать квадратные скобки: >value[2]
или >value["John Doe"]
. Это необходимо даже когда вы знаете точное имя свойства, потому что ни “2”, ни «John Doe» не являются допустимыми именами переменных, поэтому к ним нельзя обратиться при помощи записи через точку.
Элементы массива хранятся в свойствах. Так как имена этих свойств – числа, и нам часто приходится получать их имена из значений переменных, нужно использовать квадратные скобки для доступа к ним. Свойство >length
массива говорит о том, сколько в нём элементов. Имя этого свойства – допустимое имя переменной, и мы его знаем заранее, поэтому обычно мы пишем >array.length
, потому, что это проще, чем писать >array["length"]
.
Методы
Объекты >string
и >array
содержат, в дополнение к свойству >length