Asp.net Ajax【客户端一】类语法
学习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来注册类。