Type Class
Provides a typing and type-reflection system for ECMAScript (JavaScript) object-oriented programming functionality.
Namespace: None. The Type methods are global and not part of a namespace.
Inherits: window.
Type.registerNamespace( string );
Members
Name |
Description |
---|---|
Invokes a base class method with specified arguments. |
|
Creates a callback method, given the function to callback and the parameter to pass to it. |
|
Creates a delegate function that keeps the context from its creation. The context defines the object instance to which the this keyword points. |
|
Returns the implementation of a method from the base class of the specified instance. |
|
Returns the base type of an instance. |
|
Returns an Array object that contains the list of interfaces that the type implements. |
|
Returns the name of the instance type. |
|
Returns an Array object that contains references to all the root namespaces of the client application. |
|
Determines whether the type implements a specified interface. |
|
Determines whether the type inherits from the specified parent type. |
|
Initializes the base class and its members in the context of a given instance, providing the model for inheritance and for initializing base members. |
|
Returns a value that indicates whether the specified type is a class. |
|
Indicates whether the specified type is an enumeration. |
|
Get a value that indicates whether the specified type is an integer of flags. |
|
Determines whether an instance implements the specified interface. |
|
Determines whether an object is an instance of either a specified type or of one of its derived types. |
|
Returns a value that indicates whether the specified type is an interface. |
|
Returns a value that indicates whether the specified object is a namespace. |
|
Returns an instance of the type that is specified by a type name. |
|
Registers a class that is defined by the constructor, with an optional base type and with interfaces. |
|
Registers an enumeration. |
|
Registers an interface that is specified by its constructor. |
|
Registers and creates a namespace. |
|
Copies members from the base class to the prototype that is associated with the derived class, and continues this process up the inheritance chain. This enables you to reflect on the inherited members of a derived type. |
Remarks
The methods of the Type class add object-oriented programming functionality to ECMAScript (JavaScript) code by creating a typing system and by enabling type reflection. This class enables you to register code relationships and structure, which includes classes, interfaces, base classes, and enumerations. You can use the Type reflection methods such as isInstanceOfType and isImplementedBy for inspecting classes. The built-in JavaScript Function object is aliased to Type. Therefore, many of the Type methods are available for your own custom type objects created through the Type APIs.
For an overview of the object-oriented programming model in Microsoft Ajax Library, see Creating Custom Client Script by Using the Microsoft Ajax Library.
Deriving From a Base Class
The Type methods support only single inheritance but allow multiple interfaces. Derive one class from another by following these steps:
When you register the derived class, specify a base class in the baseType parameter of the registerClass method.
Initialize the derived class's base by invoking the initializeBase method from the constructor of the derived class.
Calling a Base Class Method From a Derived Class Member
You call base class methods from derived class members by invoking the Type.callBaseMethod method. You do this when you want to override methods. For example, you call the base class if you override the Sys.Component.dispose method in a derived class.
The following code shows how to register a class that is derived from a base class. You call the registerClass method of the type that is being registered. The base class is specified in the baseType parameter. The derived class initializes its base class by calling the initializeBase method from its constructor.
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);
Implementing an Interface
The Microsoft Ajax Library Type methods support interfaces. You implement an interface when you call the registerClass method by specifying a registered interface in the interfaceTypes parameter. For more information about registering an interface, see Type.registerInterface Method.
Example
The following example shows how to create a derived class that implements an interface. The code invokes the registerClass method with a base class specified in the baseType parameter and an interface specified in the interfaceTypes parameter. The base class is initialized in the context of a given instance by invoking initializeBase from the constructor of the derived class. The implementsInterface method is then called to determine the interface of a class instance.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="https://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>