[ASP.NET AJAX]类似.NET框架的JavaScript扩展

最近AJAX风靡全世界,在CommunityServer中他运用了自己定义的封装了js,并且可以跨浏览器,在较小的应用程序中,他比较适合,而且使用也比较简单。但是对微软的Microsoft AJAX还是一点不了解的我,从今天开始也要进入学习,一步一步的去了解,慢慢的深入。在博客园里也看了一些文章,但是他们大都是说AJAXExtendControl的,我想从脚本入手来学习一下Microsoft Ajax,顺便也对脚本进行复习一遍,岂不是一举两得。从原文件中我们可以看到Microsoft Asp.net Ajax是一个很强大,而且很适合C#开发人员扩展的脚本库。在Microsoft Asp.net Ajax脚本库中添加了一个Type及System来对JavaScript对象的扩展。其中扩展并形成类似.NET中常见的命名空间(namespaces),抽象类(inheritance)(注:我是这么认为的,不知道有没有更好的说法),接口(interfaces),枚举(enumerations),以及对象反射(reflection),同时也对(字符串)strings,(数组)arrays进行了扩展。这让我们这些.NET的开发人员,特别是C#开发人员更好,更有效的对脚本的扩展。

  要达到将普通的JavaScript封装成类似.NET的框架,Type可谓是功不可没阿,通过Type中的一些方法可以将我们的脚本注册到一个类,将一个类注册到一个命名空间中等等。下面我们将会对前面几个对应的类似.NET框架的Microsoft Ajax脚本库进行逐个的介绍。

  1.Namespaces

  是一个逻辑分类(个人虚构,如有雷同纯属巧合),及时将很多个类(classes)进行分类,通过Type.registerNamesapce方法可以将一个class(一下称为"类",虽然它不象话,但总的给个说法吧!)注册到一个namespace(以下成为"命名空间")中。

  2.Classes

  引用Type,所有的类都继承自JavaScript的object(在.NET中所有的类也是继承自Object),通过Type.registerClass将一个对象注册到类中。由于应用一个面向对象的模型,在Microsoft AJAX 脚本库中也能够实现继承基类的对象实例。一个类可以包含四个成员:fields, properties, methods, and events。
  
  fields:可以通过应用当前类的实例对象来引用如myClass.name="MyName";

  properties:通过带有get和set标记的方法对其进行付值,在Asp.net Ajax中通过"get_"和"set_"与方法名称结合来给他付值,如果要对一个叫myname的属性付值,可以通过get_myname和set_myname方法来完成此项任务。

  methods:方法也就是函数,这里对不多说了。

  events:事件主要涉及到一些行为动作,当一个事件被挂起(激活)时,将调用一个或多个从handlers继承的方法来处理这个事件。
  
  3. Inheritances

  众所周知虚函数是要被重写的,大多数面向对象的编程语言都支持类的继承和重写,但是JavaScript是不支持这项功能的。但是在Asp.net Ajax中通过特殊的方式(以"_"为起始标记的方法将被视为私有方法,将不能在外部类中执行此方法)实现了这种重写的功能,将会更好的对脚本库进行扩展。

  4.Inheritances

  每一个类都可以继承自另一个基类,当一个类继承基类时此类将加载基类中的方法,属性,事件等,同时可以重写基类中的方法,事件等或直接调用基类中方法等,Asp.Net Ajax中也实现了这项功能。

  5.Interfaces

  接口知识一种约定,并没有实现方法,同样在Asp.Net Ajax中也有接口,其实就是定义一个空函数。

  6.Enumerations

  通过Type.registerEnum方法可以注册一个枚举,它主要是更直观的表达一个对象。

  7.Reflection

  使用反射可以知道类中的信息,对Type进行扩展,提供APIs对类进行分析,从而得到类中的信息。

  今天先对JavaScript Microsoft Ajax Library(我比较喜欢叫他Microsoft Ajax脚本库)有一个总体上的认识,第一碰这个东西可能很多理解都是歪理,如果人总是从不懂到懂,逐渐深入也总是需要一个过程。就像当年我对Class怎么也不理解(因为我是在没有人指导的情况下,自己研究起来的,生物工程就是我的专业-中国十大骗人专业之一,由于没有注意现在毕业证还寄在学校呢?),希望我对Ajax也能一步一步的弄懂它,如果有不对的地方还请批评指教。


本文转自网魂小兵博客园博客,原文链接:http://www.cnblogs.com/xdotnet/archive/2006/12/22/aspnet_ajax_javascript_extend.html,如需转载请自行联系原作者

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/453686.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql 连接 指定字符集_关于Mysql连接池配置指定字符集的问题

问题是这样的,我在写一个网站,打算使用连接池。我使用J2EE开发,开始使用的是直连的方式,附上代码public class ConnDb {private String getDriver "com.mysql.jdbc.Driver";private String getUrl "jdbc:mysql:/…

【原】iOS:手把手教你发布代码到CocoaPods(Trunk方式)

概述 关于CocoaPods的介绍不在本文的主题范围内,如果你是iOS开发者却不知道CocoaPods,那可能要面壁30秒了。直奔主题,这篇文章主要介绍如果把你的代码发布到CocoaPods代码库中,让别人可以使用“pod search yourOpenProject”命令查…

kafka tool 查看指定group下topic的堆积数量_ELK架构下利用Kafka Group实现Logstash的高可用...

系统运维的过程中,每一个细节都值得我们关注下图为我们的基本日志处理架构所有日志由Rsyslog或者Filebeat收集,然后传输给Kafka,Logstash作为Consumer消费Kafka里边的数据,分别写入Elasticsearch和Hadoop,最后使用Kiba…

jquery flot pie画饼图

具体效果如下&#xff1a; 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv"Content-Type" content"text/html; charsetUTF-8"> 5 <title>Insert title here</title> 6 <script language"javas…

研发管理:产品研发团队的早会

百度百科定义:研发管理就是在研发体系结构设计和各种管理理论基础之上&#xff0c;借助信息平台对研发过程中进行的团队建设、流程设计、绩效管理、风险管理、成本管理、项目管理和知识管理等的一系列协调活动。[详细] 产品研发团队在履行各种产品研发过程中&#xff0c;从大的…

mysql fetch rows_差异mysql_fetch_array()和mysql_fetch_rows()函数_mysql

区别mysql_fetch_array()和mysql_fetch_rows()函数form:http://www.uphtm.com/php/254.html如果我们不仔细看会发现象mysql_fetch_array()和mysql_fetch_rows()函数没有什么区别&#xff0c;但是细细的看你会发现它们区别还是蛮大了&#xff0c;如果各位对于此函数的区别不了解…

Linux 状态命令之网络状态 iftop - 查看实时带宽流量

简介 Linux 中查看网卡流量工具有 iptraf、iftop 以及 nethogs 等&#xff0c;iftop 可以用来监控网卡的实时流量(可以指定网段)、反向解析IP、显示端口信息等。 安装 CentOS yum 方式 # 安装依赖 yum install flex byacc libpcap ncurses ncurses-devel libpcap-develyum …

Spring Boot 使用常见问题

Json格式化时间&#xff0c;时区设置 spring.jackson.time-zoneGMT8 spring.jackson.date-formatyyyy-MM-dd HH:mm:ss json数据无法序列化到RequestBody对象中 SpringMVC restful 注解之RequestBody进行json与object转换 转载于:https://www.cnblogs.com/tonyq/p/7890497.html

Angular15 利用ng2-file-upload实现文件上传

待更新 转载于:https://www.cnblogs.com/NeverCtrl-C/p/8279246.html

解读设计模式----简单工厂模式(SimpleFactory Pattern),你要什么我就给你什么

本文首发于博客园,地址:http://www.cnblogs.com/beniao/archive/2008/08/09/1263318.html 一、模式概述 从设计模式的类型上来说&#xff0c;简单工厂模式是属于创建型模式&#xff0c;又叫做静态工厂方法&#xff08;Static Factory Method&#xff09;模式&#xff0c;但不属…

Memcached常用操作

memcached是一个高性能的、分布式内存对象缓存系统&#xff0c;应用广泛。 通过缓存数据库查询结果&#xff0c;减少数据库访问次数&#xff0c;以提高动态Web应用的速度、 提高可扩展性。 它可以应对任意多个连接&#xff0c;使用非阻塞的网络IO。由于它的工作机制是在内存中开…

android自定义金额输入键盘_Android 自定义控件 - 仿支付宝数字键盘

原标题&#xff1a;Android 自定义控件 - 仿支付宝数字键盘简介在一些带有支付功能的 App 中&#xff0c;输入的密码一般只能是纯数字&#xff0c;虽然我们可以指定 EditText 输入框只能输入数字&#xff0c;但是为了提供用户的使用体验&#xff0c;我们往往更倾向于使用自定义…

博客目录(python相关)

python 相关 文件格式相关系列 Python 第三方模块之 beautifulsoup&#xff08;bs4&#xff09;- 解析 HTML Python 第三方模块之 ElementTree&#xff08;ET&#xff09;- 解析XML文件 Python 第三方模块之 lxml - 解析 HTML 和 XML 文件 python 第三方模块 yaml - 处理 …

项目主体思索

1&#xff1a;分布式定义; 2&#xff1a;SSO集成方式 3&#xff1a;menu动态菜单的添加 4&#xff1a;tag页面展示; 5&#xff1a;tiles的jsp复用&#xff1b; 暂时就想到这些了&#xff0c;以后继续补充。转载于:https://www.cnblogs.com/siyan/p/8286738.html

centos mysql pid_centos7 mysql The server quit without updating PID file(错误解决)

1 问题[rootlocalhost mysql]# /etc/rc.d/init.d/mysql statusMySQL is not running, but lock file (/var/lock/subsys/mysql[FAILED][rootlocalhost mysql]# /etc/rc.d/init.d/mysql startStarting MySQL...The server quit without updating PID file (/usr/local/mysql/dat…

tfs文件系统之NS配置管理

NameServer简称NS 充当着客户与DS的交互桥梁 1.NS配置文件修改&#xff1a; [public] #log file size default 1GB log_size1073741824 #log file num default 64 log_num 64 #log file level default debug log_leveldebug #main queue size default 10240 task_max_queue_…

插件式架构设计实践:插件式系统架构设计简介

本系列博文将使用微软RIA技术解决方案Silverlight以及扩展性管理框架Managed Extensibility Framework&#xff08;MEF&#xff09;&#xff0c;以插件式架构设计为导线&#xff0c;分享本人在从事基于微软Silverlight技术构建的RIA系统中实施插件式系统架构设计的相关技术和经…

第十章 动态选路协议

RIP 缺陷&#xff1a; Routing Information Protocol RIP没有子网的概念在路由器或链路发生故障后&#xff0c;需要很长的一段时间才能稳定下来采用跳数作为路由度量忽略了其他一些应该考虑的因素度量最大值为15则限制了可以使用RIP的网络的大小OSPF Open Shortest Path First …

五种方式让你在java中读取properties文件内容不再是难题

2019独角兽企业重金招聘Python工程师标准>>> 方式1.通过context:property-placeholder加载配置文件jdbc.properties中的内容 <context:property-placeholder location"classpath:jdbc.properties" ignore-unresolvable"true"/> 上面的配置…

hive metastore mysql_Hive MetaStore的结构

本篇主要是介绍Hive在MySQL中存储的源数据的表结构。Hive MetaStore 数据库表结构图test.pngTBLS记录数据表的信息字段解释TBL_ID在hive中创建表的时候自动生成的一个id&#xff0c;用来表示&#xff0c;主键CREATE_TIME创建的数据表的时间&#xff0c;使用的是时间戳DBS_ID这个…