Maison  >  Article  >  interface Web  >  Introduction aux méthodes setter et getter en JavaScript

Introduction aux méthodes setter et getter en JavaScript

高洛峰
高洛峰original
2017-01-03 17:09:031717parcourir

Les setters et getters en JavaScript sont des méthodes rarement utilisées dans la vie quotidienne. Ce ne sont pas des méthodes standard en elles-mêmes et ne sont prises en charge que dans les navigateurs non-IE (c'est-à-dire que le noyau peut avoir d'autres méthodes pour le faire ? Je ne connais pas les méthodes). solution encore), mais vous pouvez faire beaucoup de choses en l'utilisant, telles que :

1. Restrictions d'accès aux données :

a.value est l'appel de méthode getter pour la variable de valeur If. il est lancé dans l'implémentation de la méthode getter. Si une exception se produit, l'accès à la variable value peut être bloqué

2. Surveillez la variable dom :

window.name est un attribut dom très utile dans domaines (célèbres, voir Baidu pour plus de détails), si l'implémentation du setter de window.name est écrasée, une communication asynchrone de mémoire entre pages peut être obtenue

3. Utilisez votre imagination, il y a beaucoup de choses que vous pouvez faire

Les éléments suivants sont reproduits :
Tout d'abord, jetons un coup d'œil rapide à ce que sont les Getters et les Setters et pourquoi ils sont utiles. Voyons ensuite quelles plates-formes prennent actuellement en charge les Gettets et les Setters.

Getters et Setters

Les Getters et Setters vous permettent d'obtenir ou de définir rapidement les données d'un objet. De manière générale, un objet dispose de deux méthodes, qui sont utilisées pour obtenir et définir une certaine valeur, telles que :

{
getValue: function(){
return this._value;
},
setValue: function(val){
this._value = val;
}
}

Un avantage évident d'écrire du JavaScript de cette manière est : vous pouvez l'utiliser pour masquer les propriétés. que vous ne voulez pas d'accès direct aux étrangers. Le code final ressemble à ce qui suit (en utilisant une fermeture pour enregistrer la valeur de l'objet Field nouvellement créé) :

function Field(val){
var value = val;
this.getValue = function(){
return value;
};
this.setValue = function(val){
value = val;
};
}

Nous pouvons donc l'utiliser comme ceci :

var field = new Field("test");
field.value
// => undefined
field.setValue("test2")
field.getValue()
// => "test2"

simulation Pour "l'attribut de valeur cachée" dans l'exemple ci-dessus, notre code ressemble à ceci :

function Field(val){
var value = val;
this.__defineGetter__("value", function(){
return value;
});
this.__defineSetter__("value", function(val){
value = val;
});
}

Cependant, vous n'aimez pas écrire comme ça, mais préférez définir des getters et des setters (variables privées ) dans le prototype de l'objet Peu importe où vous l'écrivez), on peut utiliser une autre syntaxe.

function Field(val){
this.value = val;
}
Field.prototype = {
get value(){
return this._value;
},
set value(val){
this._value = val;
}
};

Cette syntaxe peut paraître bizarre, mais après l'avoir utilisée pendant un moment, il est facile de l'accepter.

Ce qui suit est un autre exemple, qui permet au monde extérieur d'obtenir un tableau de noms d'utilisateur, mais ne peut pas obtenir l'objet utilisateur original et caché.

function Site(users){
this.__defineGetter__("users", function(){
// JS 1.6 Array map()
return users.map(function(user){
return user.name;
});
};
}

Rappelez-vous les points suivants :

Dans un objet, chaque variable ne peut avoir qu'un seul getter ou setter. (Donc, la valeur peut avoir un getter et un setter, mais la valeur n'a jamais deux getters)
La seule façon de supprimer un getter ou un setter est : supprimer l'objet[nom]. delete peut supprimer certaines propriétés communes, getters et setters.
Si vous utilisez __defineGetter__ ou __defineSetter__, il remplacera le getter ou le setter précédemment défini du même nom, même la propriété.

Plateforme

Les navigateurs pris en charge sont :

Firefox
Safari 3
Opera 9.5

Ce qui précède vous est remis par l'éditeur The L'introduction complète des méthodes setter et getter en JavaScript est présentée. J'espère que cela sera utile à tout le monde. Si vous voulez en savoir plus, veuillez faire attention au site Web PHP chinois.

Pour plus d'articles liés à l'introduction des méthodes setter et getter en JavaScript, veuillez faire attention au site Web PHP chinois !


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