Maison >interface Web >js tutoriel >Introduction à __defineGetter__ et __defineSetter__ dans les compétences javascript_javascript

Introduction à __defineGetter__ et __defineSetter__ dans les compétences javascript_javascript

WBOY
WBOYoriginal
2016-05-16 16:39:421654parcourir

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. Vous pouvez définir des méthodes getter et setter pour tout objet principal prédéfini ou objet défini par l'utilisateur, ajoutant ainsi de nouvelles propriétés aux objets existants.

Il existe deux manières 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, ajoutez des définitions via les méthodes __defineGetter__ et __defineSetter__ d'Object

La seule chose à faire lors de l'utilisation du processus d'initialisation d'objet pour définir les méthodes Getter et Setter est d'ajouter "get" devant la méthode getter et "set" devant la méthode setter.

Une autre chose à noter est que la méthode getter n'a pas de paramètres et que la méthode setter doit avoir un paramètre, qui est la nouvelle valeur de l'attribut à définir.

Par exemple :

Copier le code Le code est le suivant :

o = {
valeur : 9,
        get b() {return this.value;},
set setter(x) {this.value = x;}
}  

Une fois l'objet défini, l'ajout d'une méthode getter ou setter à l'objet nécessite deux méthodes spéciales __defineGetter__ et __defineSetter__. Ces deux fonctions nécessitent que le premier paramètre soit le nom du getter ou du setter, donné sous forme de chaîne, et que le deuxième paramètre soit la fonction qui est le getter ou le setter.

Par exemple, nous ajoutons un attribut année à l'objet Date :

Copier le code Le code est le suivant :

Date.prototype.__defineGetter__('year', function() {return this.getFullYear();}
); Date.prototype.__defineSetter__('année', function(y) {this.setFullYear(y)}
);        
var maintenant = nouvelle date
alerte (maintenant.année);
Maintenant.année = 2006 ;
alerte (maintenant);

Le formulaire à utiliser dépend principalement de votre style de programmation personnel. Le premier formulaire est compact et plus facile à comprendre. Mais si vous souhaitez ajouter un Getter ou un Setter une fois l'objet défini, ou si le prototype de cet objet n'est pas écrit par vous ou est un objet intégré, alors vous devez utiliser la deuxième méthode.

Ce qui suit est une implémentation de l'ajout de l'attribut innerText au navigateur Mozilla :

Copier le code Le code est le suivant :

HTMLElement.prototype.__defineGetter__
(
"texteinner", fonction()
//définir une méthode getter pour obtenir la valeur de innerText,
//pour que vous puissiez le lire maintenant
                                                                                         var textRange = this.ownerDocument.createRange();  
//Utilisation de range pour récupérer le contenu de l'objet
             textRange.selectNodeContents(this); // récupère uniquement le contenu du nœud objet
              return textRange.toString(); // donne à innerText la valeur du contenu du nœud
>


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn