Класс Type

Предоставляет типизацию и систему отражения типов для объектно-ориентированных программных функций ECMAScript (JavaScript).

Пространство имен: отсутствует. Методы Typeявляются глобальным и не принадлежат к пространству имен.

Наследует: window

Type.registerNamespace( string );

Имя

Описание

Метод Type.callBaseMethod

Вызывает метод базового класса с заданными аргументами.

Метод Type.createCallback

Создает метод обратного вызова, если заданы функция для обратного вызова и параметр для передачи ей.

Метод Type.createDelegate

Создает функцию-делегат, хранящую контекст от его создания. Контекст определяет экземпляр объекта, на который указывает зарезервированное слово this.

Метод Type.getBaseMethod

Возвращает реализацию метода из базового класса указанного экземпляра.

Метод Type.getBaseType

Возвращает базовый тип экземпляра.

Метод Type.getInterfaces

Возвращает объект Array, содержащий список интерфейсов, реализуемых типом.

Метод Type.getName

Возвращает имя типа экземпляра.

Метод Type.getRootNamespaces

Возвращает объект Array, содержащий ссылки на все корневые пространства имен клиентского приложения.

Метод Type.implementsInterface

Определяет, реализует ли тип указанный интерфейс.

Метод Type.inheritsFrom

Определяет, наследуется ли тип из указанного родительского типа.

Метод Type.initializeBase

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

Метод Type.isClass

Возвращает значение, показывающее, является ли указанный тип классом.

Метод Type.isEnum

Показывает, является ли указанный тип перечислением.

Метод Type.isFlags

Получает значение, показывающее, является ли указанный тип флаговым или целым числом.

Метод Type.isImplementedBy

Определяет, реализует ли экземпляр указанный интерфейс.

Метод Type.isInstanceOfType

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

Метод Type.isInterface

Возвращает значение, показывающее, является ли указанный тип интерфейсом.

Метод Type.isNamespace

Возвращает значение, показывающее, является ли указанный объект пространством имен.

Метод Type.parse

Возвращает экземпляр типа, определяемый именем типа.

Метод Type.registerClass

Регистрирует определяемый конструктором класс с дополнительным базовым типом и интерфейсами.

Метод Type.registerEnum (Microsoft Ajax)

Регистрирует перечисление.

Метод Type.registerInterface

Регистрирует интерфейс, определяемый его конструктором.

Метод Type.registerNamespace

Регистрирует и создает пространство имен.

Метод Type.resolveInheritance

Копирует члены из базового класса в прототип, связанный с производным классом, и продолжает процесс по цепочке наследования. Это позволяет отражать наследуемые члены производного типа.

Методы класса Typeобеспечивают дополнительные объектно-ориентированные программные функции кода ECMAScript (JavaScript) посредством создания системы типизации и обеспечения отражения типов. Данный класс позволяет регистрировать связи и структуры кодов, включая классы, интерфейс, базовые классы и перечисления. Для просмотра классов можно воспользоваться такими методами отражения Type, как, например, isInstanceOfType или isImplementedBy. Встроенный объект JavaScript Function является псевдонимом для Type. Поэтому для объектов пользовательского типа, созданных посредством интерфейсов API Type, доступно множество методов Type.

С обзором модели объектно-ориентированного программирования в библиотеках Библиотека Microsoft Ajax, можно ознакомиться в разделе Создание пользовательского клиентского скрипта с помощью библиотеки Microsoft Ajax.

Создание класса, производного от базового класса

Методы Type поддерживают лишь единичное наследование, но допускают использование нескольких интерфейсов. Для создания производного класса выполните перечисленные ниже действия.

  • При регистрации производного класса задайте базовый класс в параметре baseType метода registerClass.

  • Инициализируйте базу производного класса посредством вызова метода initializeBase из конструктора производного класса.

Вызов метода базового класса из члена производного класса

Методы базового класса из членов производного класса вызываются посредством вызова метода Type.callBaseMethod. Это делается в случае необходимости переопределения методов. Например, базовый класс вызывается при переопределении метода Sys.Component.dispose в производном классе.

В следующем коде показано, как регистрировать класс, производный из базового класса. Вызывается метод registerClass регистрируемого в данный момент типа. Базовый класс определен в параметре baseType. Производный класс инициализирует свой базовый класс посредством вызова метода initializeBase из своего конструктора.


Type.registerNamespace('Samples');

Samples.A = function(){}
// Register Samples.A Class
Samples.A.registerClass('Samples.A');

Samples.B = function(){}
// Register Samples.B Class
Samples.B.registerClass('Samples.B');

Samples.C = function(){
    // Initialize the base.
    Samples.C.initializeBase(this);
}
// Register Samples.C Class as derviving from Samples A and implementing Samples.B
Samples.C.registerClass('Samples.C', Samples.A, Samples.B);


Реализация интерфейса

Методы Type библиотек Библиотека Microsoft Ajax реализуют интерфейсы. Для реализации интерфейса необходимо вызвать метод registerClass, указав зарегистрированный интерфейс в параметре interfaceTypes. Дополнительные сведения о регистрации интерфейса см. в разделе Метод Type.registerInterface.

В следующем примере демонстрируется создание производного класса, реализующего интерфейс. В коде вызывается метод registerClass с базовым классом, указанным в параметре baseType, и интерфейсом, указанным в параметре interfaceTypes. Базовый класс инициализируется в контексте заданного экземпляра посредством вызова метода initializeBase из конструктора производного класса. Затем вызывается метод implementsInterface для определения интерфейса экземпляра класса.


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>Samples</title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:ScriptManager runat="server" ID="ScriptManager01">
        </asp:ScriptManager>

         <script type="text/javascript">
            // Register classes to test.
            Type.registerNamespace('Samples');

            Samples.A = function(){}
            // Register Samples.A Class
            Samples.A.registerClass('Samples.A');

            Samples.B = function(){}
            // Register Samples.B Class
            Samples.B.registerClass('Samples.B');

            Samples.C = function(){
                // Initialize the base.
                Samples.C.initializeBase(this);
            }
            // Register Samples.C Class as derviving from Samples A and implementing Samples.B
            Samples.C.registerClass('Samples.C', Samples.A, Samples.B);

            var isDerived;
            isDerived = Samples.B.inheritsFrom(Samples.A);
            // Output: "false".
            alert(isDerived);

            isDerived = Samples.C.inheritsFrom(Samples.A);
            // Output: "true".
            alert(isDerived);

            var implementsInterface
            implementsInterface = Samples.C.implementsInterface(Samples.B);
            // Output: "true".
            alert(implementsInterface);

         </script>
    </form>
</body>
</html>


Показ: