使用 Microsoft Ajax Library 创建自定义客户端脚本
MSDN地址:http://msdn.microsoft.com/zh-CN/library/bb386453.aspx
Microsoft Ajax Library是微软提供的一套基于客户端的Ajax js库,通过在页面中添加ScriptManager控件可以管理这些脚本和任何自定义的脚本。
本节所介绍的所有内容均依赖于该JS库,与服务器开发无关!
MS Ajax Library有一些功能:
- 向js中添加了面向对象的功能,可以使用类、命名空间、继承等组织js代码。
- 反射功能,在运行时检查客户脚本的结构和组件。
- 枚举
- 扩展了JS的基类型,缩短开发时间
- 更好的调试和跟踪功能。
JS面向对象的用法
Type 类为 JavaScript 编程添加了命名空间、类和继承等面向对象的功能。任何使用 Type 类注册的 JavaScript 对象都会自动获得访问此功能的权限。
//注册命名空间 Type.registerNamespace("Demo");//为命名空间添加Person类,后面的方法为Person的构造函数 Demo.Person = function (firstName, lastName, emailAddress) {this._firstName = firstName;this._lastName = lastName;this._emailAddress = emailAddress; }//Person类的方法 Demo.Person.prototype = {getFirstName: function () {return this._firstName;},getLastName: function () {return this._lastName;},getEmailAddress: function () {return this._emailAddress;},setEmailAddress: function (emailAddress) {this._emailAddress = emailAddress;},getName: function () {return this._firstName + ' ' + this._lastName;},dispose: function () {alert('bye ' + this.getName());},sendMail: function () {var emailAddress = this.getEmailAddress();if (emailAddress.indexOf('@') < 0) {emailAddress = emailAddress + '@example.com';}alert('Sending mail to ' + emailAddress + ' ...');},toString: function () {return this.getName() + ' (' + this.getEmailAddress() + ')';} } //注册类Demo.Person Demo.Person.registerClass('Demo.Person', null, Sys.IDisposable);//定义Employee类 Demo.Employee = function (firstName, lastName, emailAddress, team, title) {Demo.Employee.initializeBase(this, [firstName, lastName, emailAddress]);this._team = team;this._title = title; } //Employee类的方法 Demo.Employee.prototype = {getTeam: function () {return this._team;},setTeam: function (team) {this._team = team;},getTitle: function () {return this._title;},setTitle: function (title) {this._title = title;},toString: function () {return Demo.Employee.callBaseMethod(this, 'toString') + '\r\n' + this.getTitle() + '\r\n' + this.getTeam();} } //注册Demo.Employee类,并指定其继承自Demo.Person类 Demo.Employee.registerClass('Demo.Employee', Demo.Person);
调用的代码:
var person = new Demo.Person('Jack', 'Smith', 'jack@hotmail.com'); alert(person.getEmailAddress());var employee = new Demo.Employee('Jack', 'Smith', 'jack@hotmail.com', 'Web Dev', ''); alert(employee.getTeam());
使用接口
//注册接口 Demo.Trees.IFruitTree.registerInterface('Demo.Trees.IFruitTree');
//使用接口 //类Demo.Trees.FruitTree继承了Demo.Trees.Tree,并实现了接口Demo.Trees.IFruitTree Demo.Trees.FruitTree.registerClass('Demo.Trees.FruitTree', Demo.Trees.Tree, Demo.Trees.IFruitTree);
使用枚举
//注册命名空间 Type.registerNamespace("Demo"); //定义枚举类型 Demo.Color = function () { }; Demo.Color.prototype = {Red: 0xFF0000,Blue: 0x0000FF,Green: 0x00FF00,White: 0xFFFFFF } //注册枚举类型 Demo.Color.registerEnum("Demo.Color");//用法 var color = Demo.Color.Red;
反射的用法
反射是指在运行时检查程序的结构和组件的能力。实现反射的 API 是对 Type 类的扩展。通过这些方法,可以收集有关对象的信息,例如该对象继承自谁,它是否实现特定的接口,以及它是否是特定类的实例等。
var g = new Demo.Trees.GreenApple(); var gt = Demo.Trees.GreenApple; var a = new Array(Demo.Trees.Apple,Demo.Trees.Tree,Demo.Trees.Pine,Demo.Trees.IFruitTree,Sys.IContainer);function OnButton1Click() {for (var i = 0; i < a.length; i++) {//是否为某一类型的实例if (a[i].isInstanceOfType(g)) { alert(gt.getName() + " is a " + a[i].getName() + ".");}else alert(gt.getName() + " is not a " + a[i].getName() + ".");} }function OnButton2Click() {for (var i = 0; i < a.length; i++) {//是否继承自某一类型if (gt.inheritsFrom(a[i])) {alert(gt.getName() + " inherits from " + a[i].getName() + ".");}else alert(gt.getName() + " does not inherit from " + a[i].getName() + ".");} }function OnButton3Click() {for (var i = 0; i < a.length; i++) {//判断类型是否为接口if (Type.isInterface(a[i])) {//判断对象是否实现了接口if (gt.implementsInterface(a[i])) {alert(gt.getName() + " implements the " + a[i].getName() + " interface.");}else alert(gt.getName() + " does not implement the " + a[i].getName() + " interface.");}else alert(a[i].getName() + " is not an interface.");} }
转载于:https://www.cnblogs.com/youring2/archive/2013/01/06/2847681.html
使用 Microsoft Ajax Library 创建自定义客户端脚本相关推荐
- 《ASP.NET AJAX程序设计——第II卷:客户端Microsoft AJAX Library相关》前言
章节列表:http://www.cnblogs.com/dflying/archive/2007/05/18/751741.html 在最近的一年以及今后的三五年内,我们有理由相信Web应用程序将受到 ...
- 《ASP.NET AJAX程序设计——第II卷:客户端Microsoft AJAX Library与异步通讯层》前言...
在最近的一年以及今后的三五年内,我们有理由相信Web应用程序将受到更多开发者和用户的青睐.作为领路人Google的一系列基于Web的产品完全地颠覆了传统的网页概念,让用户甚至不敢相信基于浏览器的程序竟 ...
- ASP.NET AJAX深入浅出系列课程(10):基于Microsoft AJAX Library扩展客户端组件.zip(10.77 MB)...
讲座内容: 利用面向对象类型系统是扩展组件的常用方法,但是我们在客户端进行开发的时候也不能忘记正在使用的是JavaScript这个非常灵活的动态语言,使用一些特殊的方式来扩展组件有时候会得到更好的效果 ...
- [导入]ASP.NET Ajax程序设计第II卷:客户端Microsoft Ajax Library与异步通信层及源代码.zip(101.50 MB)...
ASP.NET Ajax程序设计第II卷:客户端Microsoft Ajax Library与异步通信层及源代码 文章来源:http://www.isheu.com/data_8435_2.aspx ...
- 深入了解 Microsoft AJAX Library (转自msdn,觉得不错)
深入了解 Microsoft AJAX Library Dino Esposito 代码下载位置: CuttingEdge2007_12.exe (152 KB) Browse the Code On ...
- 实例讲解《Microsoft AJAX Library》(2):DomEvent类
引言: 大家都知道Ajax的之所以能如此丰富地实现,客户端脚本功不可没.而像Asp.Net Ajax这般庞大的工程,没有脚本类库的支撑是很难想象的.<Microsoft AJAX Library ...
- ASP.NET MVC中使用AJAX(XMLHttpRequest、Microsoft AJAX Library......)
AJAX的好处就是不会堵塞页面,可以提高用户体验,可以减少数据传输尺寸,提高应用程序的性能.目前,AJAX技术可以说是已经成为WEB开发的标准技术. AJAX技术是纯客户端技术,任何客户端框架(如:M ...
- 微软word开机自启动_如何在Microsoft Word中创建自定义封面
微软word开机自启动 A great cover page draws in readers. If you use Microsoft Word, you're in luck, because ...
- 《ASP.NET AJAX程序设计——第II卷:客户端Microsoft AJAX Library相关》定稿+详细章节列表...
篇幅和第I卷相仿,内容则专注于客户端相关部分.该书现已定稿,正处于出版过程中.下面是详细的章节目录,我也会尽快和出版社.相关网站等沟通,开放试读: 第0章 客户端与服务器端编程模型 0.1 将表现层逻 ...
最新文章
- vlc打开h264参数配置
- 跨平台日志清理工具 Log-Cutter v1.0.3 正式发布
- zzuliOJ 2536: 绿绿学姐与AI 1
- css 单行/多行文字垂直居中问题
- android studio课程管理系统,8 个最优秀的 Android Studio 插件
- 【今日CV 计算机视觉论文速览 第109期】Wed, 1 May 2019
- 计算机图形学考试题及答案_中国大学 MOOC_计算机图形学_测试题及答案
- 大数据之-Hadoop之HDFS的API操作_写数据流程_上传数据原理剖析_案例---大数据之hadoop工作笔记0066
- Android源码设计模式解析与实战(四)
- python利用什么写模块_python模块是什么?写法及作用分析
- 更改IntelliJ IDEA的Java编译器版本
- 2022MRCTF-wp
- 响应式布局的基本介绍及原理
- 实时数据库简介和比较---PI
- C++弹幕游戏自制分享
- 后端提示无法加载响应数据可能原因
- 从telnet www baidu com 80来玩一下http
- python处理文档对象【三方库—lxml】
- 手机、数码相机数据丢失恢复方法汇总
- JS接口请求的写法(原生post与get请求、http请求等)
热门文章
- ACM新手之八大输入输出格式
- 数据结构与算法(C++版)
- golang两种请求http的方式
- linux系统管理命令,压缩命令
- 宜信开源|详解PaaS平台LAIN的功能和架构
- 结构型模式:外观模式
- 「周末观赛指南」澳网新王当立?勇士冲击十连胜
- matlab练习程序(简单图像融合)
- Python面向对象程序设计之抽象工厂模式之二-一个更加pythonic的抽象工厂
- 通过重建Hosting系统理解HTTP请求在ASP.NET Core管道中的处理流程[上]:采用管道处理请求...