[ASP.NET AJAX]Function对象及对象及Type类的方法介绍类的方法介绍
上一回我们从总体上认识了JavaScript Microsoft AJAX Library由于临时有事,没有加入事例显得有点抽象,这一回一定会通
过一些事例更加直观的来会一会Asp.NET Ajax脚本库中一个很是重要的类Type。这个类提供了一些扩展面向对象编程的一些
反射方法,通过这个类我们可以注册类似.NET中的一些(如:命名空间,类,枚举等等)基本类型。这个Type类继承自window
是一个Global类型,不属于任何命名空间。下面我们来看看Type中的一些基本方法以及是怎样实一些方法的实现方式…
在认识Type类之前,我们首先要来看一看一个很重要的对象,那就是Function对象。Function对象是JavaScript的内部对象,
例如:日期对象(Date),数组对象(Array),字符对象(String)以及(Object,RegExp,Math,Error等)都属于这种,可以通过new来实
例化一个对象。除了我们常见的JavaScript申明的函数,我们也可以用以下的方法构建我们的函数对象:
var myFunction=new Function(arguments,statement)。由于我对脚本不是很熟悉,对prototype(不过听说是通过给出一个原型
对象来指明所要创建的对象的类型,然后用这个原型对象的方法创建出更多同类型的对象,原始模型模式属于对象的创建模
式)也不是很了解,不过经过我简单的测试了一下,如果对Function进行prototype扩展可以通过new来申明对象后再引用他,
也可以直接调用Function.(方法或函数)。如果直接运用Function.uName来扩展这个uName就只能通过Function.uName调用,
这让我想起了.NET中的静态方法(C#:static;VB:share),有了这些我们来看看Asp.NET Ajax中对Function扩展的几个对象:
代码如下:
Function.__typeName=”Function”;
Function.createCallback=function(b,a){
return function(){
var e=arguments.length;
if(e>0){
var d=[];
for(var c=0;c<e;c++)
d[c]=arguments[c];
d[e]=a;
return b.apply(this,d)
}
return b.call(this,a)
}
};
Function.createDelegate=function(a,b){
return function(){
return b.apply(a,arguments)
}
};
Function.emptyFunction=Function.emptyMethod=function(){};
从上面我们可以看出Function扩展了一个属性(__typeName)和几个方法(我们可以把它看成.NET中的静态对象来调用,如果用
new Function();再来调用就会得到”undefined”;可能这是JavaScript最基本的东西,但是我以前没有用过这种对象来写过脚本,
也没有系统的学过JavaScript,所以不要笑话我哦:)正在学习中…),在上面我还发现了一个比较少见的call/apply;网上搜了一
下发现在<<全面理解javascript的caller,callee,call,apply概念>>有比较详细的介绍。如果我没猜错的
话:Function.createCallback(“callback method”,”callback argument”)和回调有关;Function.createDelegate(“object通常用
this”,”执行的方法”),即通过Function.createDelegate创建的代理方法继承了b方法,从而来完成整个代理的过程(不知道是否正
确!);Function.emptyFunction/Function.emptyMethod应该是为了接口和虚函数而准备的。
Type对象继承了Function对象,由Function对象进一步延伸,在这里我们就不讨论Type地实现过程,我们今天主要来看看
Type中的一些重要的方法。Type中总共有22个方法,下面我们将逐个进行介绍:
.[prototype]Type.callBaseMethod(instance,name,baseArguments)
说明:
这个函数主要调用基函数中的方法,相当于C#中的base;这个函数只有在继承函数时才会用到。
参数:
instance:将要被调用的基函数的当前实例,通常用this;
name:将要被调用的基函数的名称,用字符串表示;
baseArguments:将要被调用的基函数的参数。
.[prototype]Type.getBaseMethod(instance,name)
说明:
引用基函数的方法实例,如果你要通过Function.call函数来调用一个方法,这将是你的选择;不过我觉得和上一个函数的差
别不是特别大,糊涂了。
参数:
instance:在这个函数中好像没有被调用,上一个函数的实现是通过这个函数来获取函数的,可能这个参数是为1中的
instance参数预留的,我也搞不懂他们为什么这样干,高手自由高手的道理吧!
name:当然是所要引用的方法的名称。
.[prototype]Type.getBaseType()
说明:
其实就是返回”typeof this.__baseType”的值,如果是”undefined”则返回null。
.[prototype]Type.getInterfaces()
说明:
通过这个可以获取当前实例所实现的接口对象数组,为一个Array对象。
.[prototype]Type.getName()
说明:
评论0
最新资源