Accès aux variables membres privées à partir de fonctions définies par prototype
En JavaScript, lors de la définition de méthodes à l'intérieur du constructeur d'une classe, vous pouvez accéder à des variables privées variables déclarées dans le constructeur. Cependant, lors de la définition de méthodes sur le prototype, l'accès à ces variables privées devient problématique.
Pour illustrer :
<code class="js">function TestClass() { var privateField = "hello"; this.nonProtoHello = function() { alert(privateField); }; } TestClass.prototype.prototypeHello = function() { alert(privateField); };</code>
L'appel de t.nonProtoHello() accède correctement au privateField privé, mais t.prototypeHello () renvoie une erreur. En effet, les méthodes définies par le prototype ne sont pas définies dans la portée du constructeur et ne peuvent donc pas accéder à ses variables locales.
Malheureusement, il n'existe aucun moyen d'accéder directement aux variables privées à partir des fonctions définies par le prototype. Cependant, vous pouvez obtenir des fonctionnalités similaires en utilisant des getters et des setters.
<code class="js">function Person(name, secret) { // Public this.name = name; // Private var secret = secret; // Public methods have access to private members this.setSecret = function(s) { secret = s; } this.getSecret = function() { return secret; } } // Must use getters/setters Person.prototype.spillSecret = function() { alert(this.getSecret()); };</code>
Dans cet exemple, le secret de la variable privée est accessible aux méthodes définies par le prototype via les fonctions getter et setter.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!