Maison  >  Article  >  interface Web  >  Comment réaliser l'encapsulation avec des méthodes privées en JavaScript ?

Comment réaliser l'encapsulation avec des méthodes privées en JavaScript ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-03 08:09:29490parcourir

How to Achieve Encapsulation with Private Methods in 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!

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