剖析ASP.NET AJAX的面向對象思想(3)_.Net教程
推薦:ASP.NET緩存:方法分析和實踐示例盡早緩存;經常緩存 您應該在應用程序的每一層都實現緩存。向數據層、業務邏輯層、UI 或輸出層添加緩存支持。內存現在非常便宜 — 因此,通過以智能的方式在整個應用程序中實現緩存,可以
Inheritance.js腳本文件中定義了兩個類:Person和Employee,Employee是從Person繼承而來。每個類都有字段、公共屬性和方法。另外,Employee類重寫了toString的實現,并在重寫的代碼中調用了基類的功能。在這個例子中把類Person的名字空間設定為"Demo"。運行頁面Inheritance.aspx,點擊“創建對象”、“對象釋放”、“公共和私有屬性”、“對象方法”、“重寫方法”,“對象類型檢查”體驗一下。
4.接口
接口是類要實現的邏輯協議,是對類進行集成的公共遵守的規范。它能使多個類和同一個接口把實現定義和類的具體實現結合起來。下面的例子定義了一個基類Tree和接口IFruitTree,Apple和Banana這兩個類實現了接口IFruitTree,但Pine類沒有實現接口IFruitTree。
Type.registerNamespace("Demo.Trees");
Demo.Trees.IFruitTree = function() {} Demo.Trees.IFruitTree.Prototype = { bearFruit: function(){} } Demo.Trees.IFruitTree.registerInterface('Demo.Trees.IFruitTree'); Demo.Trees.Tree = function(name) { this._name = name; } Demo.Trees.Tree.prototype = { returnName: function() { return this._name; }, toStringCustom: function() { return this.returnName(); }, makeLeaves: function() {} } Demo.Trees.Tree.registerClass('Demo.Trees.Tree'); Demo.Trees.FruitTree = function(name, description) { Demo.Trees.FruitTree.initializeBase(this, [name]); this._description = description; } Demo.Trees.FruitTree.prototype.bearFruit = function() { return this._description; } Demo.Trees.FruitTree.registerClass('Demo.Trees.FruitTree', Demo.Trees.Tree, Demo.Trees.IFruitTree); Demo.Trees.Apple = function() { Demo.Trees.Apple.initializeBase(this, ['Apple', 'red and crunchy']); } Demo.Trees.Apple.prototype = { makeLeaves: function() { alert('Medium-sized and desiduous'); }, toStringCustom: function() { return 'FruitTree ' Demo.Trees.Apple.callBaseMethod(this, 'toStringCustom'); } } Demo.Trees.Apple.registerClass('Demo.Trees.Apple', Demo.Trees.FruitTree); Demo.Trees.GrannySmith = function() { Demo.Trees.GrannySmith.initializeBase(this); // You must set the _description feild after initializeBase // or you will get the base value. this._description = 'green and sour'; } Demo.Trees.GrannySmith.prototype.toStringCustom = function() { return Demo.Trees.GrannySmith.callBaseMethod(this, 'toStringCustom') ' ... its GrannySmith!'; } Demo.Trees.GrannySmith.registerClass('Demo.Trees.GrannySmith', Demo.Trees.Apple); Demo.Trees.Banana = function(description) { Demo.Trees.Banana.initializeBase(this, ['Banana', 'yellow and squishy']); } Demo.Trees.Banana.prototype.makeLeaves = function() { alert('Big and green'); } Demo.Trees.Banana.registerClass('Demo.Trees.Banana', Demo.Trees.FruitTree); Demo.Trees.Pine = function() { Demo.Trees.Pine.initializeBase(this, ['Pine']); } Demo.Trees.Pine.prototype.makeLeaves = function() { alert('Needles in clusters'); } Demo.Trees.Pine.registerClass('Demo.Trees.Pine', Demo.Trees.Tree); |
Interface.js腳本文件中定義了一個Tree基類和一個IFruitTree接口。Apple和Banana兩個繼承類實現了IFruitTree接口,而Pine類沒有實現IFruitTree接口。運行Interface.aspx,點擊“對象創建”、“接口檢查”、“調用接口方法”體驗一下。
5.枚舉
枚舉是包含一組被命名的正整數常數的類。你可以像訪問屬性一樣訪問它的值。例如:
myObject.color = myColorEnum.red,枚舉提供了一種很容易理解的整數表示。下面的例子定義了一個以十六進制數表示的顏色被命名為有意義的名字的枚舉類型。
運行Enumeration.aspx,選擇下拉框中的顏色,腳本程序把背景色設為選中的枚舉類型Demo.Color中的顏色。
6.反射
反射用于檢查一個運行期程序的結構和組成,是通過類Type的API來實現反射的,這些方法使你能夠收集一個對象的信息,例如:它是繼承于哪個類、它是否實現類某個特指的接口、它是否是某個類的實例等。
下面的例子用反射的API測試GrannySmith類是否實現了前面的接口。運行Reflection.aspx,點擊“檢查類型”、“檢查繼承”、“檢查接口”體驗一下。
另外需要說明的一點是,Microsoft AJAX Library是基于開放體系架構而開發的,不僅僅用于asp.net,還能用于其它體系架構中,例如用在java中。
分享:Asp.Net中動態頁面轉靜態頁面關于在Asp.Net中動態頁面轉靜態頁面的方法網上比較多。結合實際的需求,我在網上找了一些源代碼,并作修改。現在把修改后的代碼以及說明寫一下。 一個是一個頁面轉換的類,該類通過靜態函數Ch
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP發送Email實例(可帶附件)
- js實現廣告漂浮效果的小例子
- asp.net Repeater 數據綁定的具體實現
- Asp.Net 無刷新文件上傳并顯示進度條的實現方法及思路
- Asp.net獲取客戶端IP常見代碼存在的偽造IP問題探討
- VS2010 水晶報表的使用方法
- ASP.NET中操作SQL數據庫(連接字符串的配置及獲取)
- asp.net頁面傳值測試實例代碼
- DataGridView - DataGridViewCheckBoxCell的使用介紹
- asp.net中javascript的引用(直接引入和間接引入)
- 三層+存儲過程實現分頁示例代碼
- 相關鏈接:
- 教程說明:
.Net教程-剖析ASP.NET AJAX的面向對象思想(3)。