接上篇http://www.cnblogs.com/Brave-Heart/archive/2008/06/25/1229839.html

接口
    ·构造函数抛出异常
    ·所有的方法抛出异常
    ·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,MyNamespace.IMyInterface1,IMyInterface2,...); 
       //第二个参数null表示没有父类

      【code demo】:

       <asp:ScriptManager ID="ScriptManager1" runat="server">
       </asp:ScriptManager>
     
     
       <script language="javascript" type="text/javascript">
     
       Type.registerNamespace("dongdeNamespace");
     
     
     
       dongdeNamespace.Worker = function(name)
        {
           this._name = name ? name:"(unknown)";
           this._bornyear = 0;
        }
       
        dongdeNamespace.Worker.prototype=
        {
           get_name:function()
           {
              return this._name;
           },
          
          
           get_bornyear:function()
           {
             
              return this._bornyear;
           },
           set_bornyear:function(value)
           {
              this._bornyear=value;
          
           },
          
          
           getAge:function()
           {
              return 2008-this._bornyear;
          
           },
          
          
           getWorkerDescript:function()
           {
             
              return String.format("{0}年龄:{1},出生于:{2}",this._name,this.getAge(),this.get_bornyear());
           },   
       
           //抽象方法
           getSalary:function()
           {
              throw Error.notImplemented();
          
           }
        }
       
       
      //////////////////////////////////////////////////
      dongdeNamespace.IWorker = function()
      {
         throw Error.notImplemented();
      }
      dongdeNamespace.IWorker.prototype=function()
      {
         getSex:function()
         {
            throw Error.notImplemented();
         }
        
     
      }
     
      dongdeNamespace.IWorker.registerInterface("dongdeNamespace.IWorker");
      dongdeNamespace.Worker.registerClass("dongdeNamespace.Worker",null,dongdeNamespace.IWorker);
      //dongdeNamespace.Worker.registerClass("dongdeNamespace.Worker");
     
      var newWorker = new dongdeNamespace.Worker();
     
      alert(  dongdeNamespace.IWorker.isImplementedBy(newWorker) ); //isImplementedBy反射方法,
                判断newWorker对象有没有实现dongdeNamespace.IWorker接口
      
      </script>


枚举
      ·枚举即为number
      ·很大的好处就是争强可读性,发现很多初写程序的人表示某种状态都是用数字1,2,3...来表示,这样做代码的可读性不强,不好理解
      ·每个枚举类型都有toString和parse方法
      ·定义
        MyNamespace.MyEnum = function()
        {
          throw Error.notImplemented(); 
        }
        MyNamespace.MyEnum.prototype=
        {
            Item1: 1,
            Item2: 2,
            Item3: 3 
        }
        MyNamespace.MyEnum.registerEnum("MyNamespace.MyEnum",[,true]);

  

       【code demo】:稍微简单的列子
         
       <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
       
        <script language="javascript" type="text/javascript">
       
         Type.registerNamespace("MyNamespace");
        
         MyNamespace.MyEnum = function()
        {
           throw Error.notImplemented();
 
        }
        MyNamespace.MyEnum.prototype=
        {
          Item1: "dongde",
          Item2: "ling",
          Item3: "mary" 
        }
        MyNamespace.MyEnum.registerEnum("MyNamespace.MyEnum");
       
       
        alert(MyNamespace.MyEnum.Item1);
        alert(MyNamespace.MyEnum.toString(MyNamespace.MyEnum.Item1));            
       
        </script>

反射方法

       Type.prototype.getBaseType 
       Type.prototype.getInterfaces
       Type.prototype.getName
       Type.prototype.implementsInterface
       Type.prototype.inheritsFrom
       Type.prototype.isImplementedBy
       Type.prototype.isInstanceOfType
       Type.getRootNamespaces
       Type.isClass
       Type.isInterface
       Type.isNamespace
       Type.isEnum
       Type.isFlags
       Type.parse
       Object.getType
       Object.getTypeName

   

 

 

 

 

 

 

posted on 2008-06-26 17:55  dongde  阅读(896)  评论(1编辑  收藏  举报