返回顶部
首页 > 资讯 > 前端开发 > JavaScript >如何使用Function对象及Type类
  • 776
分享到

如何使用Function对象及Type类

2024-04-02 19:04:59 776人浏览 安东尼
摘要

本篇内容主要讲解“如何使用Function对象及Type类”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用Function对象及Type类”吧!在认识Ty

本篇内容主要讲解“如何使用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;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()
说明:
    返回当前对象的名称,包括命名空间和类名称,如果为"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要用<ScriptManager/>空间引用脚本

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

--结束END--

本文标题: 如何使用Function对象及Type类

本文链接: https://lsjlt.com/news/82184.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何使用Function对象及Type类
    本篇内容主要讲解“如何使用Function对象及Type类”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用Function对象及Type类”吧!在认识Ty...
    99+
    2024-04-02
  • python中的type,元类,类,对象用法
    目录type,元类,类,对象简单描述类的生成方式元类元类type学习总结type的作用是干什么呢?type,元类,类,对象 简单描述 1.type是python内建元类,新建的元类需...
    99+
    2024-04-02
  • 对象类如何使用Object.values()方法
    小编给大家分享一下对象类如何使用Object.values()方法,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! 使用 Object.values() 通过使用 Object.valu...
    99+
    2024-04-02
  • Java类、对象及变量怎么使用
    本文小编为大家详细介绍“Java类、对象及变量怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java类、对象及变量怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。类1.什么是类类是事物的属性(外在...
    99+
    2023-06-30
  • 如何在 PHP 中使用类和对象
    类和对象是 php 中用于封装数据和行为的基本构建块。可以通过 class 关键字定义一个类,使用 new 关键字创建对象。通过箭头操作符 (->) 访问和设置对象属性。方法使用 ...
    99+
    2024-05-03
    对象
  • Vue如何使用对象代替if及switch
    这篇文章主要介绍了Vue如何使用对象代替if及switch,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。使用对象代替 if 及 switch...
    99+
    2024-04-02
  • Python类和对象如何应用
    这篇文章主要介绍了Python类和对象如何应用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python类和对象如何应用文章都会有所收获,下面我们一起来看看吧。对象 = 属性 + 方法我们前面其实已经接触过封装...
    99+
    2023-07-06
  • 讲解Java中如何构造内部类对象以及访问对象
    通过反射构造内部类对象 首先在 javalang 包下写一个包含内部类的类: package javalang; public class Outer { public s...
    99+
    2022-05-28
    Java
  • C++中如何使用类对象构造函数
    C++中如何使用类对象构造函数,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。对于普通类型的对象来说,他们之间的复制是很简单的,自己定义的类的对象同样是对象,谁也...
    99+
    2023-06-17
  • 如何使用对象到对象映射AutoMapper
    本篇内容主要讲解“如何使用对象到对象映射AutoMapper”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用对象到对象映射AutoMapper”吧!入门A...
    99+
    2024-04-02
  • 如何使用Proxy对象
    本篇内容介绍了“如何使用Proxy对象”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、聊一聊代理在日常工...
    99+
    2024-04-02
  • ES6对象如何使用
    本篇内容介绍了“ES6对象如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、对象和属性和方法JavaScript中对象:var&nb...
    99+
    2023-06-30
  • 如何在 Go 中使用对象和数据类型?
    Go 是一种现代化的编程语言,它支持面向对象编程,对象和数据类型是 Go 中非常重要的概念。在本文中,我们将学习如何在 Go 中使用对象和数据类型。 Go 中的对象 在 Go 中,对象是一种自包含的数据结构,可以包含属性和方法。Go 中的对...
    99+
    2023-06-25
    对象 数据类型 ide
  • c++中如何使用类和对象掌握目标
    在 c++ 中创建类和对象:使用 class 关键字定义类,包含数据成员和方法。使用对象名称和类名称创建对象。访问权限包括:公有、受保护和私有。数据成员是类的变量,每个对象拥有自己的副本...
    99+
    2024-05-14
    c++
  • Python面向对象的类和对象怎么使用
    这篇文章主要介绍“Python面向对象的类和对象怎么使用”,在日常操作中,相信很多人在Python面向对象的类和对象怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python面向对象的类和对象怎么使用...
    99+
    2023-06-22
  • JavaScript中对象如何使用
    这期内容当中小编将会给大家带来有关JavaScript中对象如何使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 介绍JavaScript 中,对象是 键/值...
    99+
    2024-04-02
  • 如何使用CocosCreator对象池
    目录前言:具体操作第一步:准备好 Prefab第二步:初始化对象池第三步:从对象池请求对象第四步:将对象返回对象池第五步:使用组件来处理回收和复用的事件第六步:清除对象池前言: 在运...
    99+
    2024-04-02
  • pandas如何使用dt对象
    这篇文章将为大家详细讲解有关pandas如何使用dt对象,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。dt对象的使用Series数据类型:datetime因为数据需要da...
    99+
    2024-04-02
  • pandas如何使用str对象
    这篇文章给大家分享的是有关pandas如何使用str对象的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。str对象的使用Series数据类型:str字符串# 定义一个Se...
    99+
    2024-04-02
  • ES5如何使用Array对象
    这篇文章将为大家详细讲解有关ES5如何使用Array对象,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、创建 Array 对象的语法:new Array();...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作