Выразительный JavaScript (Хавербеке) - страница 34

Если вы знаете, что интересующее вас свойство называется “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 передают строку, которая будет вставлена между элементами массива.

Объекты

Вернёмся к нашей белке. Набор журнальных записей можно представить в виде массива. Но записи не состоят только лишь из номеров или строк – каждая должна хранить список того, что сделал наш герой, и булевское значение, показывающее, превратился ли Жак в белку. В идеале нам бы хотелось группировать каждую из записей в какую-то одну переменную, и потом добавлять их в массив.