Accès aux variables membres privées à partir de fonctions définies par un prototype
En JavaScript, les variables membres privées, définies dans le constructeur, sont inaccessibles aux prototypes. méthodes définies. Cela est évident dans l'extrait de code suivant :
TestClass = function(){ var privateField = "hello"; this.nonProtoHello = function(){alert(privateField)}; }; TestClass.prototype.prototypeHello = function(){alert(privateField)};
Alors que nonProtoHello accède avec succès à privateField, prototypeHello échoue.
Raisonnement
Fonctions, y compris prototype -les méthodes définies ont accès à la portée dans laquelle elles sont définies. Les variables membres privées sont définies dans la portée du constructeur, ce qui les rend inaccessibles aux méthodes définies par le prototype.
Solution
Pour fournir aux méthodes prototypes un accès aux variables privées :
Par exemple :
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()); };
Cette approche permet aux méthodes définies par un prototype d'interagir avec des variables membres privées via des getters et des setters, tout en conservant l'encapsulation.
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!