Menu
Coddy logo textTech

Méthodes privées

Fait partie de la section Programmation Orientée Objet du Journey JavaScript de Coddy — leçon 19 sur 56.

Les méthodes privées dans les classes JavaScript vous permettent de masquer les détails d'implémentation et d'empêcher l'accès externe aux fonctionnalités internes.

À partir d'ES2022, les méthodes privées peuvent être définies en utilisant le préfixe # :

class Counter {
  #count = 0;
  
  // Créer une méthode privée
  #increment() {
    this.#count++;
  }
  
  // Méthode publique qui utilise la méthode privée
  addOne() {
    this.#increment();
    return this.#count;
  }
}

Créons une instance de Counter :

const myCounter = new Counter();

Nous pouvons appeler la méthode publique :

console.log(myCounter.addOne()); // Résultat : 1

Mais tenter d'accéder directement à la méthode privée provoquera une erreur :

myCounter.#increment(); // Erreur : La méthode privée n'est pas accessible en dehors de la classe

Les méthodes privées aident à maintenir l'encapsulation en gardant les détails d'implémentation interne cachés du monde extérieur.

challenge icon

Défi

On vous donne une classe MessageBox qui stocke des messages. Votre tâche consiste à ajouter une méthode privée appelée #isValidMessage(text) qui valide les messages. Elle doit :

  • Retourner true si le texte n'est pas vide et fait moins de 100 caractères
  • Retourner false sinon

Aide-mémoire

Les méthodes privées dans les classes JavaScript sont définies à l'aide du préfixe # et ne peuvent être consultées qu'à l'intérieur de la classe :

class Counter {
  #count = 0;
  
  // Méthode privée
  #increment() {
    this.#count++;
  }
  
  // Méthode publique qui utilise la méthode privée
  addOne() {
    this.#increment();
    return this.#count;
  }
}

Les méthodes privées ne peuvent pas être consultées depuis l'extérieur de la classe :

const myCounter = new Counter();
myCounter.addOne(); // Fonctionne
myCounter.#increment(); // Erreur : La méthode privée n'est pas accessible

Les méthodes privées aident à maintenir l'encapsulation en masquant les détails d'implémentation internes.

Essayez vous-même

import { MessageBox } from './messageBox.js';

// Utilisation de la boîte de message
const box = new MessageBox();

console.log(box.setMessage("Hello"));    // "Message set!" (utilise #isValidMessage)
console.log(box.setMessage(""));         // "Invalid message!" (utilise #isValidMessage)
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Programmation Orientée Objet