Выразительный JavaScript | страница 36



, несколько свойств, ссылающихся на функции.

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

Объекты

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

Переменные типа object (объект) – коллекции произвольных свойств, и мы можем добавлять и удалять свойства объекта по желанию. Один из способов создать объект – использовать фигурные скобки:

>var day1 = {

>  squirrel: false,

>  events: ["работа", "тронул дерево", "пицца", "пробежка", "телевизор"]

>};

>console.log(day1.squirrel);

>// → false

>console.log(day1.wolf);

>// → undefined

>day1.wolf = false;

>console.log(day1.wolf);

>// → false

В скобках мы можем задать список свойств, разделённых запятыми. Записывается каждое свойство как имя, после которого идёт двоеточие, затем идёт выражение, которое и является значением свойства. Пробелы и переносы строк не учитываются. Разбивая запись свойств объекта на несколько строк, вы улучшаете читаемость кода. Если имя свойства не является допустимым именем переменной, его нужно заключать в кавычки: