使用 Microsoft Ajax Library 创建自定义客户端脚本
生活随笔
收集整理的這篇文章主要介紹了
使用 Microsoft Ajax Library 创建自定义客户端脚本
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
MSDN地址:http://msdn.microsoft.com/zh-CN/library/bb386453.aspx
Microsoft Ajax Library是微軟提供的一套基于客戶端的Ajax js庫,通過在頁面中添加ScriptManager控件可以管理這些腳本和任何自定義的腳本。
本節(jié)所介紹的所有內(nèi)容均依賴于該JS庫,與服務(wù)器開發(fā)無關(guān)!
MS Ajax Library有一些功能:
- 向js中添加了面向?qū)ο蟮墓δ?#xff0c;可以使用類、命名空間、繼承等組織js代碼。
- 反射功能,在運行時檢查客戶腳本的結(jié)構(gòu)和組件。
- 枚舉
- 擴(kuò)展了JS的基類型,縮短開發(fā)時間
- 更好的調(diào)試和跟蹤功能。
JS面向?qū)ο蟮挠梅?/h2>
Type 類為 JavaScript 編程添加了命名空間、類和繼承等面向?qū)ο蟮墓δ堋H魏问褂?Type 類注冊的 JavaScript 對象都會自動獲得訪問此功能的權(quán)限。
//注冊命名空間 Type.registerNamespace("Demo");//為命名空間添加Person類,后面的方法為Person的構(gòu)造函數(shù) 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);?
調(diào)用的代碼:
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,并實現(xiàn)了接口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;?
反射的用法
反射是指在運行時檢查程序的結(jié)構(gòu)和組件的能力。實現(xiàn)反射的 API 是對 Type 類的擴(kuò)展。通過這些方法,可以收集有關(guān)對象的信息,例如該對象繼承自誰,它是否實現(xiàn)特定的接口,以及它是否是特定類的實例等。
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])) {//判斷對象是否實現(xiàn)了接口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.");} }?
轉(zhuǎn)載于:https://www.cnblogs.com/youring2/archive/2013/01/06/2847681.html
總結(jié)
以上是生活随笔為你收集整理的使用 Microsoft Ajax Library 创建自定义客户端脚本的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GCD 使用方法
- 下一篇: grep -v XXXXX