Веб-школа
Интернет-технологии

РЕКЛАМА

Разное

Иерархическое (многоуровневое)
меню навигации на JavaScript (часть 4)

< Часть 3

JavaScript-файлы. Как уже упоминалось, код меню для удобства разнесен по разным файлам. Файл kcmmenu.js определяет код объектов MenuItem, MenuBox и MenuBar, функцию построения меню ConstructMenu, а также некоторые вспомогательные функции. В файле menucont.js, рассмотренном в Главе 1, создаются и используются объекты, определенные в файле kcmmenu.js. Файл handles.js определяет обработчики событий от мышки для тегов с id равными submenu и menupunkt и впомогательные функции для их выполнения.

kcmmenu.js. Объектно-ориеннтированный язык JavaScript позволяет создавать объекты, определенные пользователем. Метод создания объекта можно описать следующей строкой:

var some_object = new function-constructor_of_some_object(arguments);

где new – встроенный оператор языка JavaScript распределения памяти под объект; some_object – имя переменной объекта; function-constructor_some_object – функция создания объекта (называемая также конструктором) со списком аргументов arguments. К примеру, строка Листинга 1 Главы 1

var menu = new MenuBar();

создает объект с именем menu типа MenuBar c нулевым списком аргументов. Хотя в JavaScript переменные не имеют типа, будем считать для удобства нотации, что тип переменной определяется именем функции-конструктора.

Реклама

ВАКАНСИИ (Компьютеры, Интернет). Подробнее >>

Можно считать, что поведение объекта определяется имеющимися у него полями и методами (т.е. функциями обработки данных объекта). Обращение в полю или методу реализуется оператором "точка" (.), например, для объекта obj присваивание полю field1 значения тождественно оператору
        obj.field1 = 5;,
а вызов метода GetSomeProperty() – оператору
       var str = obj.GetSomeProperty();.
В JavaScript поля и методы определяются в конструкторе в момент создания объекта, при этом в конструкторе (как впрочем и в других функциях объекта (методах)) доступна переменная с именем this, указывающая с каким конкретно объектом выполняется конструктор (метод). Используя эту переменную, контруктор создает поля и методы этого объекта. Например, для объекта menu контруктор MenuBar выгдядет так:

function MenuBar() {
    this.objname="bar";
    this.owner=null;
    this.count = 0;
    this.name = "MMB";
    this.item = new Object;
    this.addMenu = addSubMenu;
    this.getSubMenu = getSubMenu;
    this.getMenuItem = getMenuItem;
}

Он создает поля объекта objname, owner, count, name, item и методы addMenu, getSubMenu, getMenuItem, которым присваиваются ссылки на функции, описанные где-то в теле сценария. Для дальнейшего описания разъясним поле item этого объекта. Как уже упоминалось объекты JavaScript не имеют типа, поэтому можно создать безымянный (вернее, без типа в нашем понимании) объект оператором new Object. Более того, item после создания можно представить как массив нулевой длины, так что оператор item[5]=some_object увеличивает этот массив на 6 единиц (нумерация ведется с 0), присваивая шестому элементу (с индексом 5) ссылку на some_object, a предшествующим элементам неопределенное значение. Такое поведение переменных в JavaScript можно считать полиморфным, т.е. зависящим от типа и выполняемых над ним действий. Это может вызывать трудности в понимании программистов "стандартного программирования", но зачастую очень удобно для использования. [> далее >]

© 2000, Сергей Кузнецов
 

Реклама

Каждому сайту - механизм организации собственной ленты новостей бесплатно! Подробнее >>

ПОИСК по сайту: 
© iD, 2000

Hosted by uCoz