千家信息网

如何使用Function对象及Type类

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容主要讲解"如何使用Function对象及Type类",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何使用Function对象及Type类"吧!在认
千家信息网最后更新 2026年11月01日如何使用Function对象及Type类

本篇内容主要讲解"如何使用Function对象及Type类",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何使用Function对象及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;cd[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()
说明:
返回当前对象的名称,包括命名空间和类名称,如果为"undefined"返回""。

.[prototype]Type.implementsInterface(interfaceType)
说明:
如果当前类已经实现了interfaceType接口中的所有定义,则返回true,否则返回false。这也就可以实现在.NET中继承借口必须实现所有方法或属性的诺言:)

.[prototype]Type.inheritsFrom(parentType)
说明:
调用此方法可以判断当前实例是否继承自parentType类,如:var isInherited=ClassA.inheritsFrom(ClassB);如果当前实例继承自parentType则返回true,否则返回false。

.[prototype]Type.initializeBase(instance, baseArguments)
说明:
这是一个相当重要的函数,通过这个函数来初始化基函数的构造函数,也可以将自己注册为一个基函数。其中instance是初始化基类的对象,通常用this;baseArguments为基函数构造函数的参数,可以为空。

.[prototype]Type.isImplementedBy(typeInstance)
说明:
这个和6中正好相反,用来判断typeInstance是否实现了接口中的所有定义,如果是实现返回true,否则返回false。

.[prototype]Type.isInstanceOfType(instance)
说明:
判断类是否为instance的当前实例,主要用于要判断类是否为继承自他的类(子类)的实例。返回true/false。

.[prototype]Type.registerClass(typeName, baseType, interfaceTypes)
说明:
这个一看就知道是注册一个类的,baseType和interfaceTypes都是可选的,同时和.NET的一样,baseType最多一个,而接口就无所谓了。这个方法用在定一个类以后初始化之前,如果有baseType须在第一行通过Type.initializeBase来实例化基函数的构造函数。

.[prototype]Type.registerInterface(typeName)
说明:
将一个类注册为接口,接口中部包含任何的处理函数。

.[prototype]Type.resolveInheritance()
说明:
这个方法很好玩,拷贝基类的属性,来对当前类进行prototype扩展,可也就是扩展面向对象编程中的反射。

.Type.getRootNamespaces()
说明:
静态函数(我不知道别人怎么叫,我就叫他静态函数就好了:),通过这个方法可以获取所有命名空间的Array数组(即返回一个数组,包含所有命名空间)。

.Type.isClass(type)
.Type.isInterface(type)
.Type.isNamespace(type)

.Type.parse(typeName,ns)
说明:
厉害了,通过这个可以创建一个对象,即.NET中的利用Type.GetType("type,ns");和Invoke();来反射实例化一个类。ns命名空间可选项。如果类没有位于一个命名空间中(如:Type类),typeName可以为null。

.Type.registerNamespace(namespacePath)
说明:
注册一个命名空间。

.[prototype]Type.registerEnum(name,flag)
说明:
注册为枚举类型,flag判断是否为bit类型,可选。

.Type.isEnum(type)
.Type.isFlags(type)

如果要测试Enum要用空间引用脚本

到此,相信大家对"如何使用Function对象及Type类"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

对象 函数 方法 实例 接口 空间 参数 数组 类型 静态 重要 名称 属性 常用 脚本 学习 内容 原型 可以通过 字符 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技有限公司 百单网互联网科技有限公司 互联网科技公司排名 新华互联网科技学院 工业互联网科技新基建 互联网金融公司科技 西安互联网科技 佰商互联网科技有限公司 互联网 科技服务平台 银川新华互联网科技学校地址 广州恒生互联网科技有限 想开互联网科技公司怎么样 朱啸虎曾投资哪些互联网科技企业 2021互联网科技公司排名 每天都有哪些好的互联网科技 宇信科技在杭州互联网排第几 南京一网一红互联网科技有限公司 福建互联网展示科技馆设计 互联网领先科技活动 科技信息时代互联网发展 互联网加科技 青岛互联网科技公司 广西互联网科技公司 深圳艾佳互联网科技 山东吉时兔互联网科技有限公司 互联网校园科技培训 南平创想时代互联网科技有限公司 和信科技工业互联网 无锡工业互联网科技有限公司 万物互联网智能科技
0