Getter est une méthode pour obtenir la valeur d'un attribut, et Setter est une méthode pour définir la valeur d'un attribut. Les méthodes Getter et Setter peuvent être définies pour tout objet de base prédéfini ou objet défini par l'utilisateur, ajoutant de nouvelles propriétés aux objets existants.
Il existe deux façons de définir une méthode Getter ou Setter:
1. Définir lors de l'initialisation de l'objet
2. Une fois l'objet défini, la définition est ajoutée via les méthodes __definegetter__ et __defineSetter__ de l'objet.
La seule chose à faire lors de la définition des méthodes Getter et Setter en utilisant le processus d'initialisation de l'objet est de préfixer "Get" dans la méthode Getter et "Définir" dans la méthode du secteur.
Une autre chose à noter est que la méthode Getter n'a pas de paramètres, et la méthode du secteur doit avoir un paramètre, c'est-à-dire la nouvelle valeur de l'attribut à définir.
Par exemple:
La copie de code est la suivante:
O = {
Valeur: 9,
get b () {return this.value;},
set setter (x) {this.value = x;}
}
Une fois l'objet défini, ajoutez une méthode Getter ou Setter à l'objet, deux méthodes spéciales __definegetter__ et __defineSetter__ sont utilisées. Ces deux fonctions nécessitent que le premier soit le nom d'un Getter ou d'un secteur, donné dans String, et le deuxième paramètre est une fonction en tant que Getter ou Setter.
Par exemple, nous ajoutons un attribut an à l'objet Date:
La copie de code est la suivante:
Date.prototype .__ DefineGetter __ ('Year', function () {return this.getlyear ();});
Date.prototype .__ DefineSetter __ ('Year', fonction (y) {this.setlyar (y)});
var maintenant = nouvelle date;
alerte (maintenant.year);
maintenant.mure = 2006;
alerte (maintenant);
Quant à quelle forme à adopter dépend principalement du style de programmation de l'individu, la première forme est compacte et plus facile à comprendre. Mais si vous souhaitez ajouter Getter ou Setter après la définition de l'objet, ou si le prototype de cet objet n'est pas écrit par vous ou est intégré, vous devez utiliser la deuxième méthode.
Voici une implémentation qui ajoute un attribut InnerText au navigateur Mozilla:
La copie de code est la suivante:
Htmlelement.prototype .__ Definegetter__
(
"InnerText", fonction ()
// Définissez une méthode Getter pour obtenir la valeur de InnerText,
// Vous pouvez donc le lire maintenant!
{
var texTrange = this.ownerDocument.Createrange ();
// Utilisation de la plage pour récupérer le contenu de l'objet
TexTrange.SelectNodeContents (ceci);
// Obtenez uniquement le contenu du nœud d'objet
return texTrange.toString ();
// donne à InnerText la valeur du contenu du nœud
}