共用方式為


使用原型模型建立用戶端元件類別

更新:2007 年 11 月

本主題說明如何在 ASP.NET 中建立 AJAX 用戶端元件類別。AJAX 用戶端類別包含了基底元件、行為和控制項類別,使用原型模型與 JSON 標記法定義於 ECMAScript (JavaScript) 中。在 JSON 標記法中,所有原型成員都以逗號分隔。原型中的最後一個成員後面不需要逗號。

下列範例定義了一個簡單的用戶端元件類別,該類別沒有實際功能。它示範如何使用原型模型來定義衍生自 Component 基底類別 (Base Class) 的類別。

// Declare a namespace.
Type.registerNamespace("Samples");

// Define a simplified component.
Samples.SimpleComponent = function()
{
    Samples.SimpleComponent.initializeBase(this);

    // Initialize arrays and objects in the constructor
    // so they are unique to each instance.
    // As a general guideline, define all fields here. 
    this._arrayField = [];
    this._objectField = {};
    this._aProp = 0;
}
// Create protytype.
Samples.SimpleComponent.prototype = 
{
    // Define set and get accessors for a property.
    Set_Aprop: function(aNumber)
    {
        this._aProp = aNumber;
    },

    Get_Aprop: function()
    {
        return this._aProp;
    },

    // Define a method.
    DoSomething: function()
    { 
       alert('A component method was called.');
    }
} // End of prototype definition.


// Register the class as derived from Sys.Component.
Samples.SimpleComponent.registerClass('Samples.SimpleComponent', Sys.Component);

下列步驟說明如何定義 ASP.NET AJAX 用戶端類別,包括控制項類別:

  1. 如果類別為命名空間的一部分,請呼叫 Type.registerNamespace 方法來註冊該命名空間。

  2. 在建構函式名稱中定義類別建構函式及其命名空間 (Namespace)。在建構函式中,宣告所有私用欄位。建議您使用 this 指標,將建構函式中的私用變數宣告為執行個體欄位。依照慣例,私用欄位會以底線 (_) 開頭來加以命名。

    Samples.SimpleComponent = function()
    {
        Samples.SimpleComponent.initializeBase(this);
    
        this._arrayField = [];
        this._objectField = {};
        this._aProp = 0;
    }
    
  3. 定義類別原型。在原型中定義所有公用與私用方法。包括屬性存取子方法和事件。

    建議您定義建構函式中的所有欄位。在原型 (而非建構函式) 中定義欄位能獲得稍微好一點的效能。不過,並非所有欄位型別 (Fiele Type) 都可以在原型中宣告。例如,Array 和 Object 欄位型別必須在建構函式中宣告,才能使它們對每個執行個體而言都是唯一的,而不會在原型中由所有執行個體進行參考。這可避免在您要更新某個執行個體的元件屬性而非更新所有執行個體的值時,產生非預期的結果。

    注意事項:

    請一律透過 this 指標來參考原型中的成員。因為工作集使用較少的記憶體,所以 this 指標能帶來效能方面的優點。

  4. 呼叫 Type.registerClass 方法來註冊類別。如需如何使用 Type.registerClass 方法來註冊類別及宣告其介面與基底類別的詳細資訊,請參閱Type.registerClass 方法

請參閱

工作

建立自訂的隱藏式用戶端元件