Объекты
Этот код создает в классе WebBrowser одно-единственное свойство address. Обратите внимание на синтаксис, с помощью которого это делается. В качестве имени класса используется ключевое слово this, обозначающее текущий класс. Интерпретатор JavaScript создает свойства класса сразу же при первом обращении к ним; вот и в нашем случае он создал свойство address и дал ему значение, присвоенное нами. Конструктор может принимать параметры:
function
WebBrowser(homePage) {
this
.address
=
homePage;
}
Таким образом мы можем передать конструктору класса адрес домашней страницы, с которой начнется путешествие по Интернету.
var
currentWebBrowser;
currentWebBrowser
=
new
WebBrowser(
"http://www.server.ru/home_page.htm"
);
"Но, позвольте! – скажете вы. – А как же создаются методы класса?" Тоже очень просто.
Прежде всего, нам нужно написать функцию, реализующую этот метод.
function
fGoTo(pageAddress) {
this
.address
=
pageAddress;
}
Мы назвали эту функцию fGoTo. Это имя состоит из буквы f (от англ. function – функция) и имени метода goTo, который она реализует.
Теперь перепишем функцию-конструктор таким образом, чтобы создать новый метод goTo.
function
WebBrowser(homePage) {
this
.address
=
homePage;
this
.goTo
=
fGoTo;
}
Как видите, мы "присваиваем" написанную нами функцию fGoTo свойству goTo класса WebBrowser. После этого можно вызывать метод goTo этого класса.
var
currentWebBrowser;
currentWebBrowser
=
new
WebBrowser(
"http://www.server.ru/home_jpage.htm"
);
currentWebBrowser.goTo(
"http://www.w3c.org"
);
Только что вы научились создавать простейшие классы. Но на самом деле вам в очень редких случаях придется делать это. Куда чаще вы будете пользоваться уже готовыми системными классами, предоставляемыми самим интерпретатором JavaScript и другими программами, например Web-обозревателем. Поэтому давайте поговорим о системных классах.
Системных классов, предоставляемых программисту интерпретатором, довольно много. Среди них есть, например, класс Date, предназначенный для работы со значениями даты и времени.
var
d;
d
=
new
Date();
Только что мы создали объект класса Date. Так как мы не передали параметр в функцию конструктора этого класса, интерпретатор поместил в этот объект значение текущей даты. После этого можно, например, узнать номер дня недели:
var
dayNumber;
dayNumber
=
d.getDay();
Или выяснить год:
var
year;
year
=
d.getFullYear();
Некоторые методы класса Date перечислены в табл. 13.1.
Как видите, класс Date предусматривает полный набор методов для работы со значениями даты и времени. Другие системные классы также имеют достаточно большие наборы свойств и методов, которые мы не будем здесь рассматривать.