Asp.net Ajax【用戶端一】類文法

來源:互聯網
上載者:User

學習Asp.net Ajax類定義和繼承文法 

Syntax.js

/// <reference name="MicrosoftAjax.js"/>
Type.registerNamespace("Syntax");

Syntax.MachineState=function (){}

Syntax.MachineState.prototype={
Stopped:0,
Running:1
}

Syntax.MachineState.registerEnum("Syntax.MachineState");

Syntax.IMachine=function ()
{}

Syntax.IMachine.prototype={
get_currentState:function () {},
startup:function (){},
shutdown:function (){}
}

Syntax.IMachine.registerInterface("Syntax.IMachine");

Syntax.MachineBase=function (typeStr)
{
        this._typeStr=typeStr;
        this._currentState=Syntax.MachineState.Stopped;

}

Syntax.MachineBase.prototype={
get_typeStr:function (){return this._typeStr;},
get_currentState:function () {return this._currentState;},
startup:function (){ this._currentState=Syntax.MachineState.Running;},
shutdown:function (){this._currentState=Syntax.MachineState.Stopped;}
}

Syntax.MachineBase.registerClass("Syntax.MachineBase",null,Syntax.IMachine);

Syntax.Engine=function (typeStr,maxPower)
{
    Syntax.Engine.initializeBase(this,[typeStr]);
    this._maxPower=maxPower;
}

Syntax.Engine.prototype={
get_maxPower:function (){return this._maxPower;},
startup:function (){Syntax.Engine.callBaseMethod(this,"startup");},
shutdown:function (){Syntax.Engine.callBaseMethod(this,"shutdown");}
}

Syntax.Engine.registerClass("Syntax.Engine",Syntax.MachineBase);

if(typeof(Sys)!==undefined) Sys.Application.notifyScriptLoaded();

頁面部分

         <script language="javascript" type="text/javascript">
        function pageLoad()
        {
            var engineObj=new Syntax.Engine("DK-500",523);
            engineObj.startup();
            Sys.Debug.traceDump(engineObj,"engineObj");
            Sys.Debug.trace( String.format("Syntax.Engine inherits From Syntax.MachineBase ?:{0}",Syntax.Engine.inheritsFrom(Syntax.MachineBase)));
            Sys.Debug.trace( String.format("Syntax.Engine implements Syntax.IMachine ?:{0}",Syntax.Engine.implementsInterface(Syntax.IMachine)));
          
        }
       
        </script>

    </div>
    <fieldset title="輸出" style="width: 500px">
        <legend>輸出結果</legend>
        <textarea id="TraceConsole" cols="5" style="width: 495px" readonly="readonly"></textarea>
    </fieldset>

輸出

心得體會:

1.從衍生類別調用基類的方法,如Syntax.js裡的

Syntax.Engine.prototype={
get_maxPower:function (){return this._maxPower;},
startup:function (){Syntax.Engine.callBaseMethod(this,"startup");},
shutdown:function (){Syntax.Engine.callBaseMethod(this,"shutdown");}
}

即是使用callBaseMethod方法,和一般的javascript中的call方法類似。

2.在類含有帶參數的建構函式時,Type.registerClass註冊類會報錯,只能用 類名.registerClass來註冊類。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.