ajax类接口枚举

来源:互联网 发布:手机淘宝搜索不到宝贝 编辑:程序博客网 时间:2024/05/17 16:01

 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>
原创粉丝点击