Condividi tramite


Creazione di una classe Component del client tramite il modello di prototipo

Aggiornamento: novembre 2007

In questo argomento viene spiegato come creare una classe Component del client AJAX in ASP.NET. Una classe del client AJAX, che include componenti di base, comportamenti e classi di controlli, viene definita in ECMAScript (JavaScript) utilizzando il modello di prototipo e la notazione JSON. Nella notazione JSON tutti i membri del prototipo sono separati da virgole. Non è presente nessuna virgola dopo l'ultimo membro nel prototipo.

Nell'esempio seguente viene definita una semplice classe Component del client che non ha funzionalità pratica. Viene infatti illustrato come definire una classe derivata dalla classe di base Component utilizzando il modello di prototipo.

// 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);

Nella procedura seguente viene spiegato come definire una classe del client AJAX in ASP.NET, incluse le classi di controlli:

  1. Se la classe fa parte di un spazio dei nomi, registrare lo spazio dei nomi chiamando il metodo Type.registerNamespace.

  2. Definire la funzione costruttore di classe e il relativo spazio dei nomi nel nome della funzione costruttore. Nel costruttore dichiarare tutti i campi privati. È consigliabile dichiarare le variabili private nel costruttore come campi istanza utilizzando il puntatore this. Per convenzione, il nome dei campi privati è contraddistinto da un carattere di sottolineatura utilizzato come prefisso.

    Samples.SimpleComponent = function()
    {
        Samples.SimpleComponent.initializeBase(this);
    
        this._arrayField = [];
        this._objectField = {};
        this._aProp = 0;
    }
    
  3. Definire il prototipo della classe. Nel prototipo definire tutti i metodi pubblici e privati. Sono inclusi metodi ed eventi della funzione di accesso alla proprietà.

    È consigliabile definire tutti i campi nel costruttore. La definizione dei campi nel prototipo anziché nella funzione costruttore non garantisce un significativo miglioramento delle prestazioni. Non è tuttavia possibile dichiarare nel prototipo tutti i tipi di campo. Ad esempio, i tipi di campo Array e Object devono essere dichiarati nel costruttore in modo tale che siano univoci a ogni istanza, anziché farvi riferimento nel prototipo da tutte le istanze. Si eviterà così l'aggiornamento non intenzionale di una proprietà del componente per ciò che si prevede sia un'unica istanza e il valore verrà aggiornato per tutte le istanze.

    Nota:

    Fare sempre riferimento ai membri del prototipo tramite il puntatore this. Il puntatore this garantisce migliori prestazioni perché il working set utilizza una minor quantità di memoria.

  4. Registrare la classe chiamando il metodo Type.registerClass. Per ulteriori informazioni sull'utilizzo del metodo Type.registerClass per registrare una classe e dichiarare le interfacce relative e la classe di base, vedere Metodo Type.registerClass.

Vedere anche

Attività

Creazione di componenti client non visivi personalizzati