Объекты
Этот код создает в классе 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 предусматривает полный набор методов для работы со значениями даты и времени. Другие системные классы также имеют достаточно большие наборы свойств и методов, которые мы не будем здесь рассматривать.
