剖析ASP.NET AJAX的物件導向思想

iDotNetSpace發表於2009-01-05
 人們期待已久的ASP.NET AJAX v1.0正式版終於釋出了。現在你能用Microsoft ASP.NET AJAX的javascript很容易的寫出豐富的、互動式的web應用。尤其值得關注的是Microsoft AJAX Library增加了物件導向的支援,而以前javascript是不支援物件導向開發的。現在icrosoft AJAX Library能很好的支援類、名字空間、繼承、介面、列舉、反射等特徵。這些新增加的功能類似於.NET Framework,這使得開發ASP.NET AJAX應用變得容易維護,容易擴充。現在我們看看Microsoft AJAX Library是如何支援以上特徵的。

  1.類、成員和名字空間

  在Microsoft AJAX Library中,所有的JavaScript類都繼承自object(類似於.NET Framework庫,都繼承自object),在ASP.NET AJAX應用中你可以運用物件導向的程式設計模式建立繼承自Microsoft AJAX基類的物件和元件,類有四種成員:欄位、屬性、方法、事件。欄位和屬性是名/值對,用於描述一個類的一個例項的特性的。欄位是由簡單型別構成且可直接訪問,例如:

  myClassInstance.name="Fred"。

  屬性可以是任何簡單型別或引用型別,通過get和set方法訪問。在ASP.NET AJAX中,get和set是獨立的函式,並規定在函式名中使用字首"get_" 或 "set_" ,例如要獲取或設定cancel屬性的值時,你可以呼叫get_cancel或set_cancel方法。

  一個方法是完成一個活動的函式而不是返回一個屬性的值。屬性和方法在下面的例子裡都有示範。

  事件指示特指的動作發生。當一個事件發生時,它可以呼叫一個或多個函式。事件所有者可以完成等待事件發生的任何任務。

  名字空間是對關聯類的邏輯分組。名字空間使你可以對公共功能進行分組。

  為了使ASP.NET Web頁面具有ASP.NET AJAX功能,你必須新增控制元件到頁面上,當頁面啟動時,參照ASP.NET AJAX庫的指令碼自動產生。

  下面的例子顯示了頁面使用了控制元件。

         < asp:ScriptManager runat="server" ID="scriptManager" />
  下面的例子演示瞭如何使用Type.registerNamespace和.registerClass方法來把Person類增加到Demo名字空間中、建立類然後註冊類。

      Type.registerNamespace("Demo");
  Demo.Person = function(firstName, lastName, emailAddress) {

  this._firstName = firstName;

  this._lastName = lastName;

  this._emailAddress = emailAddress;

  }

  Demo.Person.prototype = {

  getFirstName: function() {

  return this._firstName;

  },

  getLastName: function() {

  return this._lastName;

  },

  getName: function() {

  return this._firstName + ' ' + this._lastName;

  },

  dispose: function() {

  alert('bye ' + this.getName());

  }

  }

  Demo.Person.registerClass('Demo.Person', null, Sys.IDisposable);
 

  在指令碼檔案Namespace.js中定義了類Person,制定了類的名字空間為"Demo"。執行頁面Namespace.aspx,點選按鈕將建立一個Demo.Person類的例項。

  2.訪問修飾

  許多物件導向程式語言都有訪問修飾的概念。允許你指定類或成員在某種範圍內有效。例如可在外部執行的程式、具有相同名字空間的內部類或特指的程式碼快內的類等。在JavaScript中沒有訪問修飾,但在ASP.NET AJAX中約定以下劃線字元開頭"_"的被認為是私有的,類的外部不能訪問。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-526835/,如需轉載,請註明出處,否則將追究法律責任。

相關文章