ajax类接口枚举

 Namespace.js代码:

 

// 注册命名空间Lin
Type.registerNamespace( " Lin " )  


/*************************************************************/
// 定义一个表示相对位置的枚举类型
Lin.Position = function() {
    
throw Error.notImplemented();
}

Lin.Position.prototype
= {
    Center:     
0,
    Top:        
1,
    Bottom:     
2,
    Left:       
3,
    Rigth:      
4
}


// 注册
Lin.Position.registerEnum( " Lin.Position " );


/*************************************************************/
// 声明一个接IRunnalbe
Lin.IRunnable = function() {}

// 在接口IRunnalbe原型中定义名为run()的空方法
Lin.IRunnable.prototype = {
    run: function()
{}
}


// 注册接口
Lin.IRunnable.registerInterface( " Lin.IRunnable " );


/*************************************************************/
// Animal 基类的构造函数
Lin.Animal  =  function(name)  {  
    
this._name=name; 
}
  

//  Animal类的方法 要使用JavaScript中的原型prototype机制
Lin.Animal.prototype  =   {  
     get_Name: function()
{
        
return this._name;
     }
,
     
     set_Name: function()
{
        
return this._name;
     }
,
     
     eat: function()
{
        alert(
"基类:Animal中的eat()方法");
     }
,
     
     cry: function()
{
        alert(
"基类:Animal中的cry()方法!");
     }

}
  

//  注册基类Animal
Lin.Animal.registerClass( " Lin.Animal " null , Sys.IDisposable);  


/*************************************************************/
// 定义类:鱼Fish
//  Lin.Fish.initializeBase(this,[name]);调用父类的构造函数。
Lin.Fish = function(name) {
    Lin.Fish.initializeBase(
this,[name]);
}


// 让类Fish继承自基类Animal并注册Fish类
Lin.Fish.registerClass( " Lin.Fish " ,Lin.Animal);


// 在基于asp.net ajax客户端框架声明的某个类中,所有的方法均可被子类重写。
Lin.Fish.prototype = {
    
//子类Fish重写父类中的eat()方法
    eat: function()
    
{
        alert(
"子类:Fish,重写父类Animal的eat()方法!");
    }
,
    
    
//若要在重写方法中调用父类的原方法,可使用callBaseMethod()方法。
    cry: function(){
        Lin.Fish.callBaseMethod(
this,"cry");
    }

}


/*************************************************************/
// 定义类:Dog
//  Lin.Fish.initializeBase(this,[name]);调用父类的构造函数。
Lin.Dog = function(name) {
   Lin.Dog.initializeBase(
this,[name]);
}
   
 
Lin.Dog.prototype
= {
   
//重写Animal类的eat()方法
    eat: function(){
      Sys.Debug.trace(
"狗吃骨头!!");
    }
,
        
   
//实现接口中的方法
   run: function(){
      Sys.Debug.trace(
"狗开始跑了!!");
   }
,
   
   get_Position: function()
{
       Sys.Debug.trace(Lin.Position.Left);
   }
,
   
   clear: function()
{
       Sys.Debug.clearTrace();
   }
,
   
   
//反射(reflection)可以提供运行时获取程序代码结构的能力。
   isTest: function(){
       
//反射的prototype方法 语法:NamespaceName.ClassName.[XX()方法]
       Sys.Debug.trace("反射的prototype方法 语法:NamespaceName.ClassName.[XX()方法]");   
        
       
//NamespaceName.ClassName.getBaseType() 得到基类的类型 
       Sys.Debug.trace("类Dog的基类是:"+Lin.Dog.getBaseType());
        
       
// NamespaceName.ClassName.getInterfaces() 得到实现的接口集合 
       Sys.Debug.trace("已实现的接口:"+Lin.Dog.getInterfaces());
       Sys.Debug.trace(
"已实现的接口:"+Lin.Fish.getInterfaces());
       
       
//NamespaceName.ClassName.getName() 得到类型名 
       Sys.Debug.trace("Lin.Dog类型名:"+Lin.Dog.getName());
       Sys.Debug.trace(
"Lin.Fish类型名:"+Lin.Fish.getName());
       Sys.Debug.trace(
"Lin.Animal类型名:"+Lin.Animal.getName());
       
       
//NamespaceName.ClassName.inheritsFrom(Namespace.ClassName)判断是否继承了某个类
       Sys.Debug.trace("Lin.Dog是否继承Lin.Animal:"+Lin.Dog.inheritsFrom(Lin.Animal));
       Sys.Debug.trace(
"Lin.Dog是否继承Lin.Fish:"+Lin.Dog.inheritsFrom(Lin.Fish));
       
       
//NamespaceName.ClassName.implementsInterface(NamespaceName.InterfaceName)判断类是否实现接口
       Sys.Debug.trace("类Dog是否实现IRunnable接口:"+Lin.Dog.implementsInterface(Lin.IRunnable));
       Sys.Debug.trace(
"类Fish是否实现IRunnable接口:"+Lin.Fish.implementsInterface(Lin.IRunnable));
       
       
//Namespace.ClassName.isInstanceOfType(instance) 判断某个类型的实例是否是这个类型。是返回true,否则返回false
       Sys.Debug.trace("Lin.Dog是否是Lin.Animal类型:"+Lin.Dog.isInstanceOfType(Lin.Dog));
       
       Sys.Debug.trace(
"Type的静态方法");
       
//Type.getRootNamespaces() 得到根命名空间的集合 
       Sys.Debug.trace("根命名空间的集合:"+Type.getRootNamespaces());
       
      
//Type.isClass(Namespace.ClassName) 判断一个类型是否是类,是返回true,否则返回false 
      Sys.Debug.trace("Lin.Dog是否是一个类:"+Type.isClass(Lin.Dog));
      Sys.Debug.trace(
"Lin是否是一个类:"+Type.isClass(Lin));
      
      
//Type.isNamespace(Namespace) 判断一个类型是否是命名空间 
      Sys.Debug.trace("Lin是否是一个命名空间:"+Type.isNamespace(Lin));
      
      
//Type.isEnum(TypeName) 判断一个类型是否是枚举类型 
      Sys.Debug.trace("Lin.Position是否是一个枚举类型:"+Type.isEnum(Lin.Position));
      
      
//Type.isFlags(TypeName) 判断一个类型是否是标记 
      Sys.Debug.trace("Lin.Position是否是一个标记:"+Type.isFlags(Lin.Position));
    }
    
}


// Lin.Dog继承于Lin.Animal,实现了Lin.IRunnable接口
// 实现多个接口语法如下:
// SomeClass.registerClass("SomeClass",SomeBaseClass,IInterface1,IInterface2,IInterface3)
Lin.Dog.registerClass( " Lin.Dog " ,Lin.Animal,Lin.IRunnable);

 

default.aspx代码如:

 

<! 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 >
    
< title > Namespace </ title >
</ head >
< body >
    
< form id = " Form1 "  runat = " server " >
<%--     最好在ScriptManager里面加入一个Scirpts标签然后在Scripts里加入
    
< asp:ScriptReference Path = " js " /> ,因为使用ScriptManager来引用
    会自动导入Asp.Net Ajax的客户端组件的js文件
--%>
        
< asp:ScriptManager ID = " sm "  runat = " server "   >
            
< Scripts >
                
< asp:ScriptReference Path = " Namespace.js "   />
            
</ Scripts >
        
</ asp:ScriptManager >
    
</ form >
    
< div >
        
< p > Animal类中的方法  </ p >
        
< input id = " btnAnimal "  type = " button "  value = " 基类Animal构造方法 "  onclick = " return btnAnimal() " />
        
< input id = " btn1 "  type = " button "  value = " 基类Animal:eat()方法 "  onclick = " return btn1Click() "   />
        
< input id = " btn2 "  type = " button "  value = " 基类Animal:cry()方法 "  onclick = " return btn2Click() " />
        
< hr  />
        
< p > Animal的子类Fish类中的方法 </ p >
        
< input id = " btnFish "  type = " button "  value = " 子类Fish构造方法 "  onclick = " return btnFish() " />
        
< input id = " btn3 "  type = " button "  value = " 子类Fish:eat()方法 "  onclick = " return btn3Click() "   />
        
< input id = " btn4 "  type = " button "  value = " 子类Fish调用基类中的cry()方法 "  onclick = " return btn4Click() " />
        
< hr  />
        
< p > Animal的子类Dog类中的方法 </ p >
        
< input id = " btnDog "  type = " button "  value = " 子类Dog构造方法 "  onclick = " return btnDog() " />
        
< input id = " btn5 "  type = " button "  value = " 子类Dog:eat()方法 "  onclick = " return btn5Click() " />
        
< input id = " btn6 "  type = " button "  value = " 子类实现接口IRunnable中的run()方法 "  onclick = " return btn6Click() " />
        
< input id = " btn7 "  type = " button "  value = " 得到枚举Position.Left的值 "  onclick = " return btn7Click() " />
        
< hr  />
        
< input id = " btnisTest "  type = " button "  value = " 反射测试 "  onclick = " return btnisTest() " />
         
< p > 调 试  信 息 </ p >
         
< textarea id = " TraceConsole "  style = " width: 650px; height: 300px; "  rows = " 5 "  cols = " 5 " ></ textarea >
         
< br  />
         
< input id = " btnClear "  type = " button "  value = " 清 除 "  onclick = " btnClear() "   />
    
</ div >
<%--     使用Asp.Net Ajax客户端编程可能需要用到js文件,那么在页面上需要引入这个js文件。
    但是不能使用src
= 地址这种方法引入文件,因为直接使用这种方法导入文件,要包含
    Asp.Net Ajax客户端组件的js文件。
--%>
    
<%--< script type = " text/javascript "  src = " Namespace.js "   ></ script >--%>
    
< script type = " text/javascript "  language = " JavaScript " >
        var animal 
=   new  Lin.Animal( " Animal类初始化 " );
        var fish
= new  Lin.Fish( " Fish类初始化 " );
        var dog
= new  Lin.Dog( " Dog类初始化 " );
        
        
// animal
        function btnAnimal()
        
{
            alert(animal.get_Name());
            
return false
        }

        function btn1Click() 
        
{
            animal.eat();
            
return false;
        }

        function btn2Click()
        
{
            animal.cry();
            
return false;
        }

        
        
// fish
        function btnFish()
        
{
            
//子类继承父类中的get_Name()方法
            alert(fish.get_Name());
            
return false;
        }

        function btn3Click()
        
{
            fish.eat();
            
return false;
        }

        
        function btn4Click()
        
{
            fish.cry();
            
return false;
        }

        
        
// dog
        function btnDog()
        
{
            alert(dog.get_Name());
            
return false;
        }

        
        function btn5Click()
        
{
            dog.eat();
            
return false;
        }

        
        function btn6Click()
        
{
            dog.run();
            
return false;
        }

        
        function btn7Click()
        
{
            dog.get_Position();
            
return false;
        }

        
        function btnClear()
        
{
            dog.clear();
        }

        
        function btnisTest()
        
{
            dog.isTest();
            
return false;
        }


    
</ script >
</ body >
</ html >
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值