Maison >interface Web >js tutoriel >Comment réaliser l'encapsulation avec des méthodes privées en JavaScript ?
Méthodes privées en JavaScript
Encapsuler des données et des méthodes au sein d'une classe est un principe fondamental de la programmation orientée objet. En JavaScript, cependant, définir des méthodes privées au sein d'une classe peut s'avérer difficile.
Création d'une méthode publique
Pour créer une méthode publique en JavaScript, nous utilisons généralement le prototype property :
<code class="javascript">function Restaurant() {} Restaurant.prototype.buy_food = function(){ // something here }; Restaurant.prototype.use_restroom = function(){ // something here };</code>
Les utilisateurs peuvent accéder à ces méthodes comme suit :
<code class="javascript">var restaurant = new Restaurant(); restaurant.buy_food(); restaurant.use_restroom();</code>
Définition de méthodes privées
Pour créer une méthode privée uniquement accessible aux autres méthodes au sein de la classe, on peut la définir en dehors du prototype :
<code class="javascript">function Restaurant() { var private_stuff = function() { // Only visible inside Restaurant() // Do something }; this.use_restroom = function() { // use_restroom is visible to all private_stuff(); }; this.buy_food = function() { // buy_food is visible to all private_stuff(); }; }</code>
Limitations
Cette approche a un inconvénient : les méthodes privées ne peuvent pas être une partie du prototype. Cela signifie qu'elles ne sont pas accessibles directement depuis une instance de la classe :
<code class="javascript">var r = new Restaurant(); r.private_stuff(); // This will not work</code>
Par conséquent, les méthodes privées ne peuvent être appelées que par des méthodes publiques au sein de la même classe. Bien que cela puisse fournir un certain niveau d'encapsulation, ce n'est pas aussi robuste que les véritables méthodes privées trouvées dans d'autres langages de programmation.
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!