Création d'une classe Component cliente à l'aide du modèle de prototype
Mise à jour : novembre 2007
Cette rubrique vous indique comment créer une classe Component cliente AJAX dans ASP.NET. Une classe cliente AJAX, qui inclut des composants de base, des comportements et des classes de contrôle est définie dans ECMAScript (JavaScript) à l'aide du modèle de prototype et notation JSON. En notation JSON, tous les membres de prototype sont séparés par des virgules. Il n'y a aucune virgule après le dernier membre dans le prototype.
L'exemple suivant définit une classe Component cliente simple qui n'a pas de fonctionnalités pratiques. Il montre comment définir une classe dérivée de la classe de base Component en utilisant le modèle de prototype.
// 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);
Les étapes suivantes décrivent comment définir une classe cliente AJAX ASP.NET, y compris les classes de contrôle :
Si la classe fait partie d'un espace de noms, enregistrez l'espace de noms en appelant la méthode Type.registerNamespace.
Définissez la fonction de constructeur de classe et son espace de noms dans le nom de la fonction constructeur. Dans le constructeur, déclarez tous les champs privés. Il est recommandé de déclarer les variables privées comme champs d'instance dans le constructeur en utilisant le pointeur this. Par convention, les champs privés adoptent un trait de soulignement en préfixe de leur nom.
Samples.SimpleComponent = function() { Samples.SimpleComponent.initializeBase(this); this._arrayField = []; this._objectField = {}; this._aProp = 0; }
Définissez le prototype de classe. Dans le prototype, définissez toutes les méthodes publiques et privées. Cela inclut des méthodes d'accesseur de propriété et des événements.
Il est recommandé de définir tous les champs dans le constructeur. La définition des champs dans le prototype plutôt que dans la fonction constructeur ne procure qu'un léger gain de performance. Toutefois, tous les types de champ ne peuvent pas être déclarés dans le prototype. Par exemple, les types de champ Array et Object doivent être déclarés dans le constructeur afin qu'ils soient uniques à chaque instance, au lieu d'être référencé dans le prototype de toutes les instances. Il ainsi possible d'éviter une mise à jour involontaire d'une propriété de composant en pensant qu'il s'agit d'une seule instance alors que la valeur de toutes les instances est mise à jour.
Remarque : Les membres du prototype doivent systématiquement être référencés à l'aide du pointeur this. Le pointeur this offre un avantage au niveau des performances parce que le jeu de travail utilise moins de mémoire.
Enregistrez la classe en appelant la méthode Type.registerClass. Pour plus d'informations sur l'utilisation de la méthode Type.registerClass pour enregistrer une classe et déclarer ses interfaces et sa classe de base, consultez Type.registerClass, méthode.