Если вы знаете, что интересующее вас свойство называется “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
, несколько свойств, ссылающихся на функции.
>var doh = "Дык";
>console.log(typeof doh.toUpperCase);
>// → function
>console.log(doh.toUpperCase());
>// → ДЫК
У каждой строки есть свойство >toUpperCase
. При вызове оно возвращает копию строки, в которой все буквы заменены на прописные. Есть также и >toLowerCase
– можете догадаться, что оно делает.
Что интересно, хотя вызов >toUpperCase
не передаёт никаких аргументов, функция каким-то образом получает доступ к строчке >“Дык”
, свойство которой мы вызывали. Как это работает, описано в главе 6.
Свойства, содержащие функции, обычно называют методами той переменной, которой они принадлежат. То есть, >toUpperCase
– это метод строки.
В следующем примере демонстрируются некоторые методы, имеющиеся у массивов:
>var mack = [];
>mack.push("Трест,");
>mack.push("который", "лопнул");
>console.log(mack);
>// → ["Трест,", "который", "лопнул"]
>console.log(mack.join(" "));
>// → Трест, который лопнул
>console.log(mack.pop());
>// → лопнул
>console.log(mack);
>// → ["Трест,", "который"]
Метод >push
используется для добавления значений в конец массива. >pop
делает обратное: удаляет значение из конца массива и возвращает его. Массив строк можно сплющить в одну строку при помощи метода >join
. В качестве аргумента >join
передают строку, которая будет вставлена между элементами массива.
Вернёмся к нашей белке. Набор журнальных записей можно представить в виде массива. Но записи не состоят только лишь из номеров или строк – каждая должна хранить список того, что сделал наш герой, и булевское значение, показывающее, превратился ли Жак в белку. В идеале нам бы хотелось группировать каждую из записей в какую-то одну переменную, и потом добавлять их в массив.