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