Глава 7. Объекты и функции

Содержание

7.1. Концепция свойств
7.1.1. Концепция
7.1.2. Сценарий
7.1.3. Результат работы сценариев (возможный)
7.1.4. Разбор сценария
7.1.5. Задание
7.1.6. Возможное решение
7.2. Иерархия объектов
7.2.1. Концепция
7.2.2. Что имеется в виду
7.2.3. Результат действия иерархии
7.2.4. Разбор иерархии объектов
7.2.5. Задание
7.2.6. Ответы
7.3. Создание функций
7.3.1. Концепция
7.3.2. Сценарий
7.3.3. Результат работы сценария
7.3.4. Разбор сценария
7.3.5. Задание
7.3.6. Возможное решение

В главе использованы материалы [BARNS].

7.1. Концепция свойств

7.1.1. Концепция

Иерархия объектов JavaScript играет настолько важную роль, что мы посвятим ей отдельный урок, но мы уже и так начинаем понемногу ее осваивать.

Нам известно, что существуют объекты, например, document, и методы, например, write, которые воздействуют на объекты. В Уроке 6 мы немного имели дело с созданием объектов или созданием переменных. Теперь рассмотрим концепцию свойств. Мы уже слегка касались этой темы. Свойства представляют собой часть или качество объекта. В Уроке 4 мы работали со свойством документа bgColor.

Было бы трудно описать все возможные свойства в одном уроке. Поэтому здесь будут рассмотрены только наиболее популярные из них и указано, какую пользу они могут принести.

7.1.2. Сценарий

Ниже вы увидите несколько сценариев, но все они составлены по одной схеме: для каждой команды объект.свойство ( object.property ) создается переменная, затем переменные помещаются в команду document.write() для вывода.

7.1.2.1. Свойства объекта "navigator" (браузер)

<SCRIPT LANGUAGE="javascript">

var an = navigator.appName;

var av = navigator.appVersion;

var acn = navigator.appCodeName;

var ua = navigator.userAgent;

document.write("Вы пользуетесь <B>" +an+ "</B>,

версия " +av+ ".

<BR>Кодовое название " +acn+ ", заголовок "

+ua+ "." );

</SCRIPT>

Приведенный выше текст в скобках должен располагаться на одной строке.

7.1.2.2. Свойства объекта "document"

<SCRIPT LANGUAGE="javascript">

var bgc = document.bgColor;

var fgc = document.fgColor;

var lc = document.linkColor;

var al = document.alinkColor;

var vlc = document.vlinkColor;

var url = document.location;

var ref = document.referrer;

var t = document.title;

var lm = document.lastModified;

document.write("Цвет фона этой страницы <B>"

+bgc+ "</B>.")

document.write("<BR>Цвет текста этой страницы <B>" +fgc+ "</B>.")

document.write("<BR>Цвет ссылок этой страницы <B>" +lc+ "</B>.")

document.write("<BR>Цвет активной ссылки этой страницы

<B>" +al+ "</B>.")

document.write("<BR>Цвет посещенной ссылки этой страницы

<B>" +vlc+ "</B>.")

document.write("<BR>URL этой страницы <B>" +url+ "</B>.")

document.write("<BR>До этого вы были на странице <B>" +

ref+ "</B>.")

document.write("<BR>Заголовок этой страницы (TITLE) <B>" +t+ "</B>.")

document.write("<BR>Последние изменения в документ внесены: <B>"

+lm+ "</B>.")

</SCRIPT>

7.1.2.3. Свойства объекта "history"

<SCRIPT LANGUAGE="javascript">

var h = history.length;

document.write("До этой страницы вы посетили" +h+ " страниц.")

</SCRIPT>

7.1.2.4. Два свойства объекта "location" (адрес)

<SCRIPT LANGUAGE="javascript">

var hst = location.host

document.write("Страница находится на <B>" + hst +

"</B>." )

</SCRIPT>

<SCRIPT LANGUAGE="javascript">

var hstn = location.hostname

document.write("Страница находится на <B>" + hstn +

"</B>." )

</SCRIPT>

7.1.3. Результат работы сценариев (возможный)

Некоторые сведения о вашем компьютере.

Вы пользуетесь Opera, версия 9.01 (Windows NT 5.1; U; ru).

Кодовое название Mozilla, заголовок Opera/9.01 (Windows NT 5.1; U; ru).

Цвет фона этой страницы #334775.

Цвет текста этой страницы #334775.

Цвет ссылок этой страницы #fbbcac.

Цвет активной ссылки этой страницы #d0550b.

Цвет посещенной ссылки этой страницы #fbbcac.

URL этой страницы http://jsp.newmail.ru/les7.htm.

До этого вы были на странице .

Заголовок этой страницы Урок 7. Концепция свойств.

Последние изменения внесены: Fri, 27 Jun 2003 00:09:36 GMT.

До этой страницы вы посетили 1 страниц.

Страница находится на  www.mail.ru.

Страница находится на www.mail.ru.

7.1.4. Разбор сценария

Поговорим о каждой группе отдельно...

7.1.4.1. Почему в некоторых местах шрифт жирный?

Да в общем-то так, ради забавы. Найдите в сценарии элементы, которые выводятся жирным шрифтом. Как можно видеть, были просто добавлены команды <B> и </B> по обеим сторонам от имени переменной — внутри двойных кавычек. Раз это оператор document.write, то в текст можно вписать любые команды HTML, изменяющие текст. Только следите за тем, чтобы команды HTML находились внутри двойных кавычек, чтобы они воспринимались как текст, иначе браузер посчитает их частью скрипта — это было бы ошибкой.

Вернемся к нашим свойствам...

7.1.4.2. Свойства объекта navigator

<SCRIPT LANGUAGE="javascript">

var an = navigator.appName;

var av = navigator.appVersion;

var acn = navigator.appCodeName;

var ua = navigator.userAgent;

document.write("Вы пользуетесь <B>" +an+ "</B>,

версия " +av+ ".<BR>Кодовое название " +acn+ ",

заголовок " +ua+ "." );

</SCRIPT>

Еще раз напоминаем, что текст в скобках должен быть весь на одной строке.

Люди любят эти свойства. Объект navigator имеет четыре свойства. Обратите внимание на заглавные буквы!

appName сообщает название браузера, например, Netscape или Explorer.

appVersion сообщает версию браузера и платформу, на которой он работает.

appCodeName сообщает кодовое имя, данное браузеру, например, Netscape называет свой браузер Mozilla.

userAgent сообщает версию используемого браузере.

Иногда важно знать версию браузера. Чуть позже мы изучим команды if (если). Зная браузер пользователя и его версию, можно дать команду: "Если браузер такой-то, сделать то-то."

7.1.4.3. Свойства объекта document

<SCRIPT LANGUAGE="javascript">

var bgc = document.bgColor;

var fgc = document.fgColor;

var lc = document.linkColor;

var al = document.alinkColor;

var vlc = document.vlinkColor;

var url = document.location;

var ref = document.referrer;

var t = document.title;

var lm = document.lastModified;

document.write("Цвет фона этой страницы <B>"

+bgc+ "</B>.")

document.write("<BR>Цвет текста этой страницы <B>" +fgc+ "</B>.")

document.write("<BR>Цвет ссылок этой страницы <B>" +lc+ "</B>.")

document.write("<BR>Цвет активной ссылки этой страницы

<B>" +al+ "</B>.")

document.write("<BR>Цвет посещенной ссылки этой страницы

<B>" +vlc+ "</B>.")

document.write("<BR>URL этой страницы <B>" +url+ "</B>.")

document.write("<BR>До этого вы были на странице <B>" +

ref+ "</B>.")

document.write("<BR>Заголовок этой страницы <B>" +t+ "</B>.")

document.write("<BR>Последние изменения в документ внесены: <B>"

+lm+ "</B>.")

</SCRIPT>

Снова напоминаем, что текст выше в скобках должен целиком располагаться в одной строке.

Свойства документа HTML очень популярны в JavaScript. Здесь перечислены девять. На самом деле их тринадцать, но остальные четыре нам пока не нужны. Они перечислены ниже.

bgColor возвращает шестнадцатеричный код цвет фона.

fgColor возвращает шестнадцатеричный код цвета текста.

linkColor возвращает шестнадцатеричный код цвета ссылки.

alinkColor возвращает шестнадцатеричный код цвета активной ссылки.

vlinkColor возвращает шестнадцатеричный код цвета посещенной ссылки.

location возвращает URL страницы.

referrer сообщает, с какой страницы пришел пользователь. Если информация недоступна, то возвращается пустое место.

title возвращает заголовок документа HTML, т .е. текст между командами TITLE.

lastModified сообщает дату, когда были внесены последние изменения в страницу (на самом деле дату, когда страница была загружена на сервер или сохранена последний раз на жестком диске).

cookie (не показано) возвращает текстовый файл cookie.

anchors (не показано) возвращает количество анкеров HREF на странице.

forms (не показано) возвращает массив (список) объектов формы на странице.

links (не показано) возвращает количество всех отдельных ссылок.

В данном случае также с помощью команды if можно сказать: "Если время больше 6 вечера, пусть текст будет белый, а фон черный. Если еще нет 6 вечера, то пусть фон будет голубой, а текст зеленый". Существует множество способов использовать свойства документа.

7.1.4.4. Свойства объекта history

<SCRIPT LANGUAGE="javascript">

var h = history.length;

document.write("До этого вы посетили " +h+ " страниц.")

</SCRIPT>

Это очень популярный объект. Многие читатели хотят иметь возможность переместиться на одну или несколько страниц вперед или назад. Они пытаются воспроизвести кнопки "Вперед" и "Назад" на панели браузера. Объект history позволяет это сделать.

Объектом является журнал посещений history. Это список страниц, которые посетил браузер во время работы. Список истории позволяет реализовать кнопку "Назад" и просмотреть еще раз любую страницу.

Свойством является length (протяженность). Оно также популярно. Позже вы узнаете, как можно использовать его с другими командами. Оно позволяет определить в сценарии количество страниц в папке "history".

Существует также метод go() (пойти), который позволяет передвигаться по history.length с указанным шагом.

7.1.4.5. Два свойства объекта location

<SCRIPT LANGUAGE="javascript">

var hst = location.host

document.write("Страница находится на <B>" + hst + "</B>.")

</SCRIPT>

<SCRIPT LANGUAGE="javascript">

var hstn = location.hostname

document.write("Страница находится на <B>" + hstn + "</B>.")

</SCRIPT>

Здесь объектом является location. Это URL на языке JavaScript, адрес страницы. Выше представлены два свойства объекта location: host, и hostname. Команды равноценны, так как выполняют одну и ту же задачу — сообщают URL в текстовом формате или адрес IP, в зависимости от сервера. Но... location.host сообщает URL плюс "порт", с которым соединен пользователь. location.hostname сообщает только URL.

Если вы получаете одинаковый результат от обеих команд, значит, ваш сервер не соединил вас со специальным портом. Говоря техническим языком, свойство "порта" — null.

Кстати, эти две команды не работают, если просматривать страницу с жесткого диска. Результат может быть только в том случае, если она размещается на сервере, так как сценарию требуется URL для анализа.

Существует множество других свойств, с которыми вы встретитесь во время уроков. Здесь даны общие представление о свойствах — как они используются и что делают наиболее часто используемые.

7.1.5. Задание

Задание будет следующее: используя одну из вышеприведенных команд типа объект.свойство, напишите сценарий JavaScript, который создает ссылку на страницу документа HTML на каком-либо сервере. Например, если вы находитесь на www.you.ru, сценарий JavaScript создаст ссылку на www.you.ru/index.html.

Также, какое бы свойство ни использовалось, присвойте ему имя переменной.

7.1.6. Возможное решение

Это можно было сделать по-разному, например, так:

<script LANGUAGE="javascript">

var dr = location.host;

document.write("<a HREF=http://" +dr+ "/index.htm>

   Щелкните, чтобы попасть куда-нибудь</a>")

</SCRIPT>

Имейте в виду, что страница должна находиться на сервере, на жестком диске сценарий не работает, так как там нет никакого location.host.