一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

MicrosoftAJAX实现Javascript面向对象之接口详解

时间:2012-02-14 编辑:简简单单 来源:一聚教程网

接口
接口用于定义实现它的类的输入和输出要求。 这样,函数可以和实现同一接口的类进行交互,而不用考虑该类还实现哪些其他功能。

Microsoft AJAX Library Type 方法支持接口。 调用 registerClass 方法时,通过在 interfaceTypes 参数中指定一个已注册的接口,可以实现一个接口。

 

实现接口
使用 Type类的registerInterface 方法可注册构造函数所定义的接口。

 代码如下 复制代码

var interfaceVar = typeInstanceVar.registerInterface(typeName)

 

通过 Type类的registerClass 方法,可以按照构造函数的定义,使用可选基类和接口类型注册一个类。 registerClass 方法的调用在定义类之后、实例化类之前进行。 registerClass 方法是从类直接调用的。

 代码如下 复制代码

classInstanceVar.registerClass(typeName, baseType, interfaceTypes)

Type 类的方法支持实现接口。 在注册类时,通过在 registerInterface 方法的 interfaceTypes 参数中指定已注册接口来实现接口。

接口不应实现任何成员,因为实现该接口的任何类必须覆盖这些成员

 

下面的示例演示如何创建实现接口的派生类。 代码通过在 baseType 参数中指定的基类以及在 interfaceTypes 参数中指定的接口来调用 registerClass 方法。 通过从派生类的构造函数中调用 initializeBase,在给定实例的上下文中初始化基类。 然后,调用 implementsInterface 方法以确定类实例的接口。

 代码如下 复制代码

// 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);


要点
接口

与类的定义方法大致相同
构造函数抛出异常
所有的方法抛出异常(只有方法签名,不提供实现)
注册接口时使用registerInterface方法
接口无法继承其他接口
 

接口定义

 代码如下 复制代码
MyNamespace.IMyInterface=function(){throw Error.notImplemented()}
MyNamespace.IMyInterface.prototype={myMethod:function(){throw Error.notImplemented()}}
MyNamespace.IMyInterface.registerInterface(“MyNamespace.IMyInterface”);

 

接口实现

在使用registerClass方法注册类时候可以传入额外的参数来实现接口

 代码如下 复制代码
MyNamespace.MyClass.registerClass("MyNamespace.MyClass",null,IMyInterface1,IMyInterface1,…);

 

示例

 代码如下 复制代码



   
       
       
       
   
   
       
   

热门栏目