Пространства имен

Ключевой особенностью объектно?ориентированных расширений Java-Script в ASP.NET AJAX является добавление функциональности пространств имен (namespaces). Они позволяют объединять функции в логические группы под общим именем. Помогают избежать конфликтов имен, когда имеется несколько функций с одинаковыми именами, но преследующих различные цели. Спецификация языка JavaScript не предусматривает наличие пространств имен, поэтому данная возможность отсутствует в самом языке. Однако платформа ASP.NET AJAX способна эмулировать пространства имен, используя для этого довольно простой прием. Этот прием заключается в следующем: сначала создается новый класс (который выступает в роли «пространства имен»), а затем создается другой (новый) класс, как свойство класса пространства имен. Это позволяет обращаться к классу с использованием нотации ИмяКлассаПространстваИмен.ИмяВашегоКласса.

Одним из базовых классов платформы ASP.NET AJAX является класс Type. Этот класс имеет два удобных метода, которые позволяют создавать пространства имен в ASP.NET AJAX:
Type.registerNamespace(name)
Регистрирует пространство имен
Type.registerClass(name, base type, interface type)
Регистрирует класс как член пространства имен

Для демонстрации использования этой техники мы создадим пространство имен OReilly, которое будет объединять в себе несколько классов, используемых в этой книге.


Допустим, что один из этих классов называется Software и имеет два свойства: name и vendor. Для начала необходимо зарегистрировать пространство имен OReilly:
Type.registerNamespace("OReilly");

Затем с помощью следующего фрагмента создадим класс Software, как элемент пространства имен OReilly:

OReilly.Software = function(name, vendor) {
var _name = (name != null) ? name : "unknown";
var _vendor = (vendor != null) ? vendor : "unknown";
this.getName = function() {
return _name;
}
this.setName = function(name) {
_name = name;
}
this.getVendor = function() {
return _vendor;
}
this.setVendor = function(vendor) {
_vendor = vendor;
}
}

Наконец, необходимо зарегистрировать имя OReilly.Software как класс, чтобы приложение могло использовать его. Для этого необходимо вызвать метод registerClass(). Этот метод может принимать до трех параметров:

name
Имя класса
base type
Базовый тип класса, если таковой существует, в виде ссылки на данный тип
interface type
Тип интерфейса класса, если таковой существует, в виде ссылки на данный тип

Kласс OReilly.Software не имеет базового типа и не реализует какой-либо интерфейс.


Поэтому в данном случае при вызове метода register?
Class() второй и третий аргументы были опущены:
Type.registerClass("OReilly.Software");

Теперь можно создавать экземпляры класса Software с помощью ключевого слова new, а затем получать и устанавливать значения их свойств.

В примере 4.1 создаются два экземпляра: один для Microsoft Internet Explorer, а второй – для Mozilla Foundation Firefox. Кроме того, в примере 4.1 используется одна очень удобная особенность ASP.NET AJAX.

После того как обе страницы и все библиотеки, используемые ASP.NET AJAX, будут загружены, вызывается функция pageLoad() (если она существует). Не забывайте, что window.onload не принимает во внимание загрузку внешних файлов, таких как библиотеки JavaScript. Поэтому при работе с ASP.NET AJAX для решения такого рода задач всегда необходимо использовать функцию pageLoad().

Пример 4.1. Использование пространств имен ASP.NET AJAX ClientNamespaces.aspx
<%@ Page Language="C#" %>
"http://www.w3.org/TR/xhtml1/DTD/xhtml1?transitional.dtd"> ASP.NET AJAX


(body)



(/body)


Классы пространств имен в ASP.NET AJAX не являются настоящими пространствами имен, но тем не менее они позволяют структурировать сложный программный код JavaScript и не требуют для этого больших усилий..



Оцените статью: (0 голосов)
0 5 0

Статьи из раздела ASP.NET AJAX на эту тему:
Sys.StringBuilder
Интерфейсы
Клиентские версии классов .NET
Методы элементов DOM
Наследование классов