|
www.russia-job.ru |
| ||||||||||||||||||||||||||||||||||||||||||||||||
|
Форум | Новые проекты | Контакты | Реклама на сайте | Работаем вместе | |||||||||||||||||||||||||||||||||||||||||||||||||
  Все о работе   Работа на дому   Поиск работы Работа в Интернете   Виды заработка   Создание сайта   Мошенничество   Полезные статьи   Новости   Халява в сети   Разное Вебмастеру   Web-дизайн   Вопросы   Литература   Шаблоны сайтов Разное   Карта сайта   Ссылки   О сайте
| Самоучитель по Dreamweaver MX / Часть 3. Используем новейшие техноголгииОбъекты Выше
были рассмотрены два вида переменных: обычные переменные, иначе говоря, скаляры
и массивы. Скаляры могут содержать только одно значение, массивы же — множество
пронумерованных значений, доступ к которым можно получить по их номеру — индексу.
И скаляры, и массивы находят свое применение в программах на JavaScript; нет
смысла рассказывать, в каких случаях что применять, — это и так очевидно. Давайте
лучше поговорим еще об одном виде переменных, которого мы до сих пор не касались. Это
объекты. Объектом
называется сложный тип данных, содержащий не какое-то одно значение, а целую
сущность. Эта сущность может иметь набор свойств и методов, с помощью которых
программа может ей управлять; свойство -это своего рода переменная, принадлежащая
объекту, а метод — функция, также принадлежащая объекту и выполняющая над ним
какие-либо действия. Объект (и сущность, содержащаяся в нем) представляет собой
"вещь в себе"; ее внутренняя структура и принцип действия неизвестны
использующему объект программисту. В
качестве примера объекта можно рассмотреть прекрасно знакомый вам Web-обозреватель.
У него есть свойство "адрес" и метод "открыть Web-страницу, которой
принадлежит этот адрес". Вы можете присвоить этом свойству нужный адрес,
а также можете его оттуда считать и присвоить какой-либо переменной или использовать
иным способом: Именно
такой синтаксис используется для доступа к свойствам: <имя объеках <имя
свойства> (не забудьте поставить знак точки). В первом случае мы поместили
в свойство address объекта currentWebBrowser строку с интернет-адресом комитета
WWWC. Во втором случае мы извлекли из этого свойства находящийся в нем адрес,
прибавили к нему справа текст "/сss/" и присвоили переменной currAddr.
(Как видите, для слияния (или конкатенации) строк использовался оператор +.) Для
вызова метода используется аналогичный синтаксис: <имя объекта>. <имя
метода> (). Сейчас мы вызовем метод до вышеупомянутого объекта: currentWebBrowser.gо
(); Метод
до — не что иное, как обычная функция. В данный момент возвращенное ей значение
игнорируется, но в других случаях оно может использоваться. Также метод, как
и любая функция, может принимать параметры: Таким
образом мы можем управлять Web-обозревателем. И — заметьте -ничего не зная о
его внутреннем устройстве. Более того, мы не обязаны о нем знать. Использование
объектов как раз и направлено на то, чтобы позволить программистам пользоваться
различными инструментами и дополнительными компонентами, не зная их внутреннего
устройства, а также создавать такие инструменты и компоненты для своих коллег. Говорят,
что JavaScript — объектно-ориентированный язык программирования, т. к. использует
объекты. Этим он отличается от обычных, процедурных языков, которые используют
только функции. Каждый
объект перед тем, как с ним можно будет работать, должен быть создан. Выполняется
это с помощью оператора создания объекта new. var
currentWebBrowser; currentWebBrowser = new WebBrowser(); Здесь
объявляется переменная currentWebBrowser и ей присваивается вновь созданный
с помощью оператора new объект. Этот объект создан на основе класса WebBrowser,
который является как бы шаблоном для создаваемых объектов. A currentWebBrowser
также иногда называется экземпляром класса WebBrowser. Удалить
ненужный объект можно с помощью метода delete. currentWebBrowser.delete(); Имейте
в виду, что ненужные объекты, созданные вами, всегда надо удалять, чтобы освободить
ресурсы системы. Исключение составляют только истемные объекты, создаваемые
самим интерпретатором или предоставляемые интерпретатору Web-обозревателем.
Если вы попытаетесь удалить системный объект, интерпретатор выдаст сообщение
об ошибке. О системных объектах мы поговорим ниже. Но
каким же образом создаются классы объектов? Исключительно просто. Более того,
если бы остальные языки объектно-ориентированного программирования увидели,
как легко создаются классы в JavaScript, они бы умерли от зависти. Взглянем
еще раз на выражение, с помощью которого создаются объекты: currentWebBrowser
= new WebBrowser(); Согласитесь,
это сильно напоминает вызов функции. Но дело в том, что WebBrowser — и есть
функция, только специальным образом написанная. Она называется конструктором
класса. Давайте напишем конструктор для класса WebBrowser. function
WebBrowser() { } Этот
код создает в классе WebBrowser одно-единственное свойство address. Обратите
внимание на синтаксис, с помощью которого это делается. В качестве имени класса
используется ключевое слово this, обозначающее текущий класс. Интерпретатор
JavaScript создает свойства класса сразу же при первом обращении к ним; вот
и в нашем случае он создал свойство address и дал ему значение, присвоенное
нами. Конструктор может принимать параметры: function
WebBrowser(homePage) { this.address = homePage; } Таким
образом мы можем передать конструктору класса адрес домашней страницы, с которой
начнется путешествие по Интернету. var
currentWebBrowser; "Но,
позвольте! — скажете вы. — А как же создаются методы класса?" Тоже очень
просто. Прежде
всего, нам нужно написать функцию, реализующую этот метод. function
fGoTo(pageAddress) { this.address = pageAddress; Мы
назвали эту функцию fGoTo. Это имя состоит из буквы f (от англ. function — функция)
и имени метода дото, который она реализует. Теперь
перепишем функцию-конструктор таким образом, чтобы создать новый метод дото. function
WebBrowser(homePage) { this.address
= homePage; this.goTo
= fGoTo; } Как
видите, мы "присваиваем" написанную нами функцию fGoTo свойству дото
класса WebBrowser. После этого можно вызывать метод дото этого класса. var
currentWebBrowser; Только
что вы научились создавать простейшие классы. Но на самом деле вам в очень редких
случаях придется делать это. Куда чаще вы будете пользоваться уже готовыми системными
классами, предоставляемыми самим интерпретатором JavaScript и другими программами,
например Web-обозревателем. Поэтому давайте поговорим о системных классах. Системных
классов, предоставляемых программисту интерпретатором, довольно много. Среди
них есть, например, класс Date, предназначенный для работы со значениями даты
и времени. var
d; d
= new Date () ; Только
что мы создали объект класса Date. Так как мы не передали параметр в функцию
конструктора этого класса, интерпретатор поместил в этот объект значение текущей
даты. После этого можно, например, узнать номер дня недели: var
dayNumber; dayNumber = d.getDay(}; Или
выяснить год: var
year; year
= d.getFullYear(); Некоторые
методы класса Date перечислены в табл. 13.1. Как
видите, класс Date предусматривает полный набор методов для работы со значениями
даты и времени. Другие системные классы также имеют достаточно большие наборы
свойств и методов, которые мы не будем здесь рассматривать. Таблица
13.1. Некоторые методы класса Date
Системный
класс Math — другого рода. Он включает набор свойств и методов, реализующих
различные математические и тригонометрические функции. Единственный его объект
создается самим интерпретатором JavaScript при запуске и уничтожается при завершении
работы. Так что вам не нужно самим создавать объекты этого класса. Это как раз
типичный случай системного объекта. var
f; f
= Math.sin(Math.PI); В
результате вычисления вышеприведенного выражения в переменной f окажется значение
sin (я). Существуют
также системные классы Number и string, служащие для хранения данных соответственно
числового и строкового форматов, и несколько других системных классов, используемых
значительно реже. Язык
JavaScript имеет одну любопытную особенность. Дело в том, что любая переменная
обычного типа данных может быть представлена как объект какого-либо класса.
Давайте, например, рассмотрим следующий код: var
s, 1; s
= "JavaScript"; 1
= s.length; Здесь
мы сначала помещаем в переменную s строку "JavaScript", а потом вызываем
свойство length этой переменной. В таком случае интерпретатор считает
переменную s объектом класса string и беспрепятственно "пускает" нас
к свойству length этого класса, возвращающему длину строки текста, которую мы
и помещаем в переменную 1. Аналогичный
"финт" можно проделать и с числовой величиной: var
a, s; а
= 16765247; s
= a.toString(); Здесь
вызываем метод toString класса Number, возвращающий строковое представление
числа. Раньше говорилось, что, помимо интерпретатора JavaScript, системные классы могут представляться также и другими программами. К числу этих самых "других" программ относится Web-обозреватель. Его классы и системные объекты — это что-то особенное... << назад   Содержание    далее >> При копировании материалов прямая гиперссылка обязательна russia-job.ru | |||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||
