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 创建自定义客户端脚本相关推荐

  1. 《ASP.NET AJAX程序设计——第II卷:客户端Microsoft AJAX Library相关》前言

    章节列表:http://www.cnblogs.com/dflying/archive/2007/05/18/751741.html 在最近的一年以及今后的三五年内,我们有理由相信Web应用程序将受到 ...

  2. 《ASP.NET AJAX程序设计——第II卷:客户端Microsoft AJAX Library与异步通讯层》前言...

    在最近的一年以及今后的三五年内,我们有理由相信Web应用程序将受到更多开发者和用户的青睐.作为领路人Google的一系列基于Web的产品完全地颠覆了传统的网页概念,让用户甚至不敢相信基于浏览器的程序竟 ...

  3. ASP.NET AJAX深入浅出系列课程(10):基于Microsoft AJAX Library扩展客户端组件.zip(10.77 MB)...

    讲座内容: 利用面向对象类型系统是扩展组件的常用方法,但是我们在客户端进行开发的时候也不能忘记正在使用的是JavaScript这个非常灵活的动态语言,使用一些特殊的方式来扩展组件有时候会得到更好的效果 ...

  4. [导入]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 ...

  5. 深入了解 Microsoft AJAX Library (转自msdn,觉得不错)

    深入了解 Microsoft AJAX Library Dino Esposito 代码下载位置: CuttingEdge2007_12.exe (152 KB) Browse the Code On ...

  6. 实例讲解《Microsoft AJAX Library》(2):DomEvent类

    引言: 大家都知道Ajax的之所以能如此丰富地实现,客户端脚本功不可没.而像Asp.Net Ajax这般庞大的工程,没有脚本类库的支撑是很难想象的.<Microsoft AJAX Library ...

  7. ASP.NET MVC中使用AJAX(XMLHttpRequest、Microsoft AJAX Library......)

    AJAX的好处就是不会堵塞页面,可以提高用户体验,可以减少数据传输尺寸,提高应用程序的性能.目前,AJAX技术可以说是已经成为WEB开发的标准技术. AJAX技术是纯客户端技术,任何客户端框架(如:M ...

  8. 微软word开机自启动_如何在Microsoft Word中创建自定义封面

    微软word开机自启动 A great cover page draws in readers. If you use Microsoft Word, you're in luck, because ...

  9. 《ASP.NET AJAX程序设计——第II卷:客户端Microsoft AJAX Library相关》定稿+详细章节列表...

    篇幅和第I卷相仿,内容则专注于客户端相关部分.该书现已定稿,正处于出版过程中.下面是详细的章节目录,我也会尽快和出版社.相关网站等沟通,开放试读: 第0章 客户端与服务器端编程模型 0.1 将表现层逻 ...

最新文章

  1. vlc打开h264参数配置
  2. 跨平台日志清理工具 Log-Cutter v1.0.3 正式发布
  3. zzuliOJ 2536: 绿绿学姐与AI 1
  4. css 单行/多行文字垂直居中问题
  5. android studio课程管理系统,8 个最优秀的 Android Studio 插件
  6. 【今日CV 计算机视觉论文速览 第109期】Wed, 1 May 2019
  7. 计算机图形学考试题及答案_中国大学 MOOC_计算机图形学_测试题及答案
  8. 大数据之-Hadoop之HDFS的API操作_写数据流程_上传数据原理剖析_案例---大数据之hadoop工作笔记0066
  9. Android源码设计模式解析与实战(四)
  10. python利用什么写模块_python模块是什么?写法及作用分析
  11. 更改IntelliJ IDEA的Java编译器版本
  12. 2022MRCTF-wp
  13. 响应式布局的基本介绍及原理
  14. 实时数据库简介和比较---PI
  15. C++弹幕游戏自制分享
  16. 后端提示无法加载响应数据可能原因
  17. 从telnet www baidu com 80来玩一下http
  18. python处理文档对象【三方库—lxml】
  19. 手机、数码相机数据丢失恢复方法汇总
  20. JS接口请求的写法(原生post与get请求、http请求等)

热门文章

  1. ACM新手之八大输入输出格式
  2. 数据结构与算法(C++版)
  3. golang两种请求http的方式
  4. linux系统管理命令,压缩命令
  5. 宜信开源|详解PaaS平台LAIN的功能和架构
  6. 结构型模式:外观模式
  7. 「周末观赛指南」澳网新王当立?勇士冲击十连胜
  8. matlab练习程序(简单图像融合)
  9. Python面向对象程序设计之抽象工厂模式之二-一个更加pythonic的抽象工厂
  10. 通过重建Hosting系统理解HTTP请求在ASP.NET Core管道中的处理流程[上]:采用管道处理请求...