Метод Type.registerClass
Регистрирует класс, определенный конструктором, с дополнительным базовым типом и типом интерфейса.
classInstanceVar.registerClass(typeName, baseType, interfaceTypes)
Параметры
typeName
Строка, представляющая полное имя типа.baseType
(Необязательно). Базовый тип.interfaceTypes
(Необязательно). Неограниченный массив определений типа интерфейса, которые реализуются этим типом.
Возвращаемое значение
Зарегистрированный тип.
Исключения
Тип исключения |
Атрибут Condition |
---|---|
(Отладка). Параметр typeName не может быть вычислен. – или – (Отладка). Параметр baseType не принадлежит классу. |
|
(Отладка). Класс, указанный typeName, уже зарегистрирован. |
Заметки
Метод registerClass используется для регистрации класса, определенный конструктором, с дополнительным базовым классом и типом интерфейса. Метод registerClass следует вызвать после определения, но до создания класса. Вызов метода registerClass происходит непосредственно из класса.
Создание класса, производного от базового класса
Методы класса Sys.Type поддерживают одиночное наследование. Выведите один класс из другого посредством следующих действий:
При регистрации производного класса, задайте базовый класс в параметре baseType метода registerClass.
В первой строке определения производного класса инициализируйте базовый класс путем вызова метода Type.initializeBase.
В следующем примере показано, как зарегистрировать класс, который является производным от базового класса. Код вызывает метод registerClass базового класса, указанного в параметре baseType. В первой строке определения производного класса инициализируйте базовый класс, вызвав метод Type.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 . Для реализации интерфейса нужно указать зарегистрированный интерфейс в параметре interfaceTypes метода registerClass при регистрации класса. Дополнительные сведения о регистрации интерфейса см. в разделе Метод Type.registerInterface.
В следующем примере показано, как зарегистрировать производный класс. Метод registerClass указывает базовый класс в параметре baseType.
<!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>Sample</title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager runat="server" ID="ScriptManager1">
</asp:ScriptManager>
<script type="text/javascript">
// Register classes to test.
Type.registerNamespace('Samples');
Samples.A = function()
{
// Initialize as a base class.
Samples.A.initializeBase(this);
}
Samples.B = function(){}
Samples.C = function(){}
Samples.A.registerClass('Samples.A');
Samples.B.registerClass('Samples.B', Samples.A);
Samples.C.registerClass('Samples.C');
var isDerived;
isDerived = Samples.B.inheritsFrom(Samples.A);
// Output: "true".
alert(isDerived);
isDerived = Samples.C.inheritsFrom(Samples.A);
// Output: "false".
alert(isDerived);
</script>
</form>
</body>
</html>