Type.registerClass 메서드

생성자에 정의된 클래스를 선택적 요소인 기본 형식과 인터페이스 형식을 사용하여 등록합니다.

classInstanceVar.registerClass(typeName, baseType, interfaceTypes)

typeName

형식의 정규화된 이름을 나타내는 문자열입니다.

baseType

(선택적 요소) 기본 형식입니다.

interfaceTypes

(선택적 요소) 형식에서 구현하는 인터페이스 형식 정의의 바인딩되지 않은 배열입니다.

등록된 형식입니다.

예외 형식

Condition

Error.argument 함수

(디버그) typeName을 확인할 수 없는 경우

또는

(디버그) baseType이 클래스가 아닌 경우

Error.invalidOperation 함수

(디버그) 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>



표시: