Comment définir les variables privées javascript dans le constructeur?
Dire que j'ai une fonction javascript/classe appelée Foo
et il possède une propriété appelée bar
. Je veux que la valeur de bar
être fourni lorsque la classe est instanciée, e.g:
var myFoo = new Foo(5);
serait mis myFoo.bar
à 5.
Si je fais bar
une variable publique, alors cela fonctionne, e.g:
function Foo(bar)
{
this.bar = bar;
}
Mais si je veux le rendre privé, de l'e.g:
function Foo(bar)
{
var bar;
}
Alors comment pourrais-je définir la valeur de la variable privée bar
tel qu'il soit disponible pour toutes les fonctions internes de foo
?
source d'informationauteur Click Upvote | 2011-07-23
Vous devez vous connecter pour publier un commentaire.
Vous devez mettre toutes les fonctions qui ont besoin d'accéder à la variable privée à l'intérieur du constructeur:
L'un des meilleurs tutoriels privée et l'accès protégé en javascript est ici: http://javascript.crockford.com/private.html.
D'une façon à laquelle je pense est d'utiliser une fermeture qui est attribué à un nom et renvoie un nouvel objet. Vous serait passer dans tous les arguments du constructeur par le biais de l'appel à la fermeture. Qui finirait par être quelque chose comme ce qui suit:
De cette façon, a et b sont toujours déclarés de façon unique. Vous pouvez alors construire votre objet comme suit:
J'ai récemment eu un problème similaire mais je voulais utiliser des propriétés d'accesseur aussi. Ci-dessous est un Foo(Bar) exemple basé sur ce que j'ai trouvé une solution. Cet exemple est trivial, mais peut facilement être étendue à l'aide de plus complexe get/fonctions de jeu.