Глаза страшат, а руки делают

ЧАСТЬ ВТОРАЯ


18. Встроенные объекты

  • что такое встроенные объекты;
  • объект String;
  • объект Array;
  • объект Date;
  • объект Math;
  • объект Object.

Этот урок — чисто описательный, своего рода введение в новую большую тему. Многое здесь повторяется из прошлых уроков, только больше «разжёвывается». Если вы хорошо усвоили предыдущий материал, то можете пробежать этот урок «по диагонали», вылавливая отдельные куски, несущие полезную для вас информацию.

Ядро, объекты и экземпляры

Есть в программировании такое понятие — ядро. Самая главная и стабильная часть системы. Ядро JavaScript состоит из нескольких объектов, которые мы в 12-м уроке называли встроенными объектами. Встроены они намертво, подточить мы их не можем. Но зато вовсю можем пользоваться их многочисленными свойствами и методами. Правда, иногда объект может и не иметь свойств. Бывают объекты и без методов.

Для краткости мы обычно говорим «создать объект», хотя по отношению к встроенным объектам это не совсем верно. Чтобы использовать возможности объекта, мы обычно создаём его экземпляры с помощью конструктора (например, конструктора new) или литерала (например, любой текст, заключённый в кавычки, является строковым литералом, автоматически создающим экземпляр объекта String). О разнице между объектом и его экземплярами следует помнить при обращении к статическим методам некоторых объектов, работающим не с экземплярами, а с самим объектом.

Некоторые встроенные объекты используются сравнительно редко, в сложных специальных случаях, при высокой технике программирования. Я назвал дополнительными, и изучать мы их будем в последнюю очередь, в качестве повышения квалификации. Остальные пять весьма употребительны. Это объекты String, Array, Date, Function, Math и Object. Перечисляю их не по алфавиту, а по «степени важности». По крайней мере, для меня. Возможно, с этим порядком кто-то может и поспорить.

Объект Number остался «похороненным» в дополнительных объектах, хотя с этим словом мы встретимся не раз. Но мы будем использовать Number не как объект, а как тип данных. А его объектная реализация если нам и понадобится, то очень нескоро.

JavaScript, как и многие другие объектно-ориентированные языки, использует так называемый точечный синтаксис. Например, чтобы узнать значение свойства объекта, нужно указать имя этого объекта и имя свойства через точку:

имя_объекта.свойство

Мы с вами уже много раз это проделывали, теперь же узнаем, как это называется. Точно так же вызывается и метод объекта. Как вы, надеюсь, помните, у методов есть ещё и скобки, в которые добавляются (или не добавляются) аргументы:

имя_объекта.метод(аргументы)

Если помните, то подобные скобки с аргументами используются и в функциях. Методы и функции очень похожи друг на друга. Только функции создаём мы сами, а методы уже встроены в язык. Если мы назовём методы встроенными функциями, то не погрешим против истины.

Терминологическое отступление об аргументах и параметрах

Значения в скобках, необходимые для выполнения того или иного метода или функции, иногда называют аргументами, а иногда — параметрами. Я долго думал, что это просто синонимы. В общем, на практике так оно и есть. Но, строго говоря, у каждого из этих терминов есть своя «область действия».

Аргументы — это обобщённые «псевдонимы» тех значений, которые нужны для выполнения метода или функции. Параметры — это конкретные значения, которые передаются аргументам для выполнения метода или функции.

Объясню на пальцах. Предположим, у нас есть такая фантастическая функция:

function собака(порода) {
. . .
/* код функции */
}

А теперь мы вызываем её в скрипте:

document.write(собака("пудель"))

порода — аргумент;

"пудель" — параметр.

То есть аргумент — это «контейнер» для параметра, а параметр — конкретное наполнение этого «контейнера».

Эта информация — лишь для общего развития, а на практике можете понимать их как синонимы.

Я употребляю оба термина в их строгом значении.

Объект String

Строка текста. Этот объект очень широко используется. Во-первых, через него можно управлять текстом, находящимся на web-странице. Во-вторых, программно изменять HTML-код. В-третьих, строковыми значениями формируются параметры многих аргументов, в-четвёртых... в-пятых...

Одним словом, String — очень важный объект.

String имеет всего 3 свойства: constructor, length и prototype.

Свойства constructor и prototype позволят нам в дальнейшем создавать на базе строк новые объекты с новыми свойствами, length определяет количество символов в данной крнкретной строке.

Методов же очень много. Половина из них связана с HTML-тэгами и их атрибутами. Это методы big(), bold(), fontcolor(), fontsize(), italics(), link(), small(), strike() и некоторые другие. Вероятно, вы можете догадаться по именам, что такие методы, как fromCharCode(), toLowerCase() или toUpperCase() связаны с кодом шрифта или регистром символов строки. А методы fixed(), indexOf(), lastIndexOf(), match(), slice(), split(), substring(), valueOf(), скорее всего, пока вам непонятны. И должен сказать, я перечислил сейчас далеко не все методы (пугаю! пугаю! пугаю!). Но пугаться не надо, так же как и не надо специально заучивать их наизусть. Для этого существуют справочники. Здесь вы тоже найдёте подобный справочник в давно обещанном разделе «Шпаргалки».

Объект Array

Это уже частично знакомый нам массив. В программировании на любом языке массивы имеют очень важное значение. Ведь что такое программирование? Это, в первую очередь, создание алгоритмов, то есть универсальных инструкций, аналогично работающих с разными данными. При создании алгоритма очень важна соответствующая группировка этих предполагаемых данных. И вот тут-то массивы оказываются жизненно необходимы.

Умение разносторонне использовать массивы — это, не побоюсь сказать, почти тождественно умению программировать.

Объект Date

Объект, содержащий дату и время. У каждого компьютера есть часы — системный таймер, ежемиллисекундно захватывающий и выдающий текущее время. К этому таймеру и обращается объект Date. С помощью этого объекта удобно манипулировать с относительными датами (осталось столько-то дней, часов, минут, секунд), можно его использовать для создания необходимых временных интервалов в выполнении событий (с точностью до миллисекунды) — например, при создании выпадающего меню часто требуется маленькая задержка, чтобы оно не исчезло, пока мы переносим мышку на нужный пункт. Можно использовать его и вовсе нестандартно. К примеру, мы хотим чтобы при открытии страницы появлялась какая-нибудь любая картинка из заданного набора. Тогда в качестве генератора случайных чисел можно использовать текущее время через объект Date. В общем, весьма интересный и полезный объект.

Объект Function

С функциями мы уже встречались. Это группы из одной или нескольких инструкций, которые могут быть вызваны в любое время во время загрузки страницы или после неё. Вызов функции требует включение имени функции с набором круглых скобок () внутри другой инструкции скрипта. Кроме этого, функция может быть назначена на атрибут обработчика события в тэге HTML.

Функции могут получать любое количество аргументов. Аргументы могут проходить в виде списка переменных с разделителями-запятыми в паре круглых скобок после имени функции.

Переменные, используемые как аргументы функции, не нуждаются в объявлении через var.

Функция — это тоже объект. Для его создания можно использовать конструктор Function. Этот cинтаксис обычно более сложен, чем простое определение функции. Объекты Function, созданные конструктором Function, вычисляются при каждом использовании. Это менее эффективно, чем объявление функции и её вызов в коде, поскольку объявленные функции компилируются только один раз, сразу при открытии страницы со скриптом.

Объект Math

Если объект String можно увидеть как конкретную строку, объект Date — засечь по часам, то объект Math — «невидимка». Это своеобразный контейнер для ряда встроенных математических функций, «завёрнутых» в его свойства и методы.

Вот некоторые из его свойств:

E

Константа Эйлера (число e), приблизительно равная 2.718.

LN10

Натуральный логарифм десяти (loge10), приблизительно равный 2.302.

LOG2E

Логарифм числа e по основанию 2 (log2e), приблизительно равный 1.442.

PI

Отношение длины окружности к её диаметру (число пи), приблизительно равное 3.14159.

SQRT2

Корень квадратный из 2, приблизительно равный 1.414.

А вот несколько примеров методов:

abs()

Возвращает абсолютную величину числа

asin()

Возвращает арксинус числа.

atan2()

Возвращает угол между осью X и точкой, образованной аргументами.

ceil()

Возвращает наименьшее целое число, большее или равное данному числу.

cos()

Возвращает косинус числа.

exp()

Возвращает Eчисло, где число — аргумент, а E — константа Эйлера (число e).

log()

Возвращает натуральный логарифм числа.

max(), min()

Возвращают максимальное и минимальное из 2-х чисел.

random()

Возвращает число, равномерно распределённое в интервале от 0 до 1.

round()

Округляет аргумент до ближайшего целого.

sqrt()

Возвращает корень квадратный из числа.

Объект Object

Объект-конструктор для создания пользовательских объектов. Его также называют базовым объектом языка JavaScript. Однако не путайте его с объектом Global. Если Global — это своего рода «питательная среда», «вселенная» JavaScript, то Object — что-то вроде «делегата» от этой «вселенной». Он содержит несколько свойств и методов, общих для всех объектов ядра. Можно создавать его экземпляры и наделять их дополнительными свойствами и методами.

Этим объектом пользуются нечасто. В сущности, я мог бы со спокойной душой поместить его в «дополнительные объекты». Но и в этой, второй, средней части нашего курса мне хочется приоткрыть форточку в миры нетривиального программирования.


Итак, мы узнали:

что такое встроенные объекты и что с ними делать.


К следующему уроку >>


 007480