Type.registerClass メソッド
更新 : 2007 年 11 月
コンストラクタとして定義されたクラスを登録します。オプションで、基本型とインターフェイス型も登録できます。
classInstanceVar.registerClass(typeName, baseType, interfaceTypes)
パラメータ
typeName
型の完全修飾名を表す文字列。baseType
(省略可能) 基本型。interfaceTypes
(省略可能) この型が実装するインターフェイス型定義の非バインド配列。
戻り値
登録された型。
例外
例外の種類 |
条件 |
---|---|
(デバッグ) typeName は評価できません。 または (デバッグ) baseType はクラスではありません。 |
|
(デバッグ) typeName で指定されているクラスは既に登録されています。 |
解説
registerClass メソッドを使用すると、コンストラクタとして定義されたクラスを登録できます。オプションで基本型とインターフェイス型と共に登録することもできます。registerClass メソッドは、クラスが定義された後、インスタンス化される前に呼び出されます。registerClass メソッドは、クラスから直接呼び出されます。
基本クラスからの派生
Sys.Type クラスのメソッドは、単一継承をサポートします。次の手順に従って、あるクラスを他のクラスから派生させます。
派生クラスを登録するには、基本クラスを registerClass メソッドの baseType パラメータに指定します。
派生クラス定義の先頭行で、Type.initializeBase メソッドを呼び出して基本クラスを初期化します。
基本クラスから派生したクラスを登録する方法を次の例に示します。このコードは、基本クラスを baseType パラメータに指定して、registerClass メソッドを呼び出します。派生クラスは、定義の先頭行で 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 クラスのメソッドは、インターフェイスの実装をサポートします。インターフェイスを実装するには、クラスを登録するときに、登録済みのインターフェイスを registerClass メソッドの interfaceTypes パラメータに指定します。インターフェイスを登録する方法の詳細については、「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>