Menu
Coddy logo textTech

プライベートメソッド

CoddyのJavaScriptジャーニー「オブジェクト指向プログラミング」セクションの一部。レッスン 19/56。

JavaScript クラスの Private メソッドを使用すると、実装の詳細を隠し、内部機能への外部からのアクセスを防ぐことができます。

ES2022 以降では、# 接頭辞を使用して private メソッドを定義できます。

class Counter {
  #count = 0;
  
  // プライベートメソッドを作成する
  #increment() {
    this.#count++;
  }
  
  // プライベートメソッドを使用するパブリックメソッド
  addOne() {
    this.#increment();
    return this.#count;
  }
}

Counter インスタンスを作成しましょう:

const myCounter = new Counter();

publicメソッドを呼び出せます。

console.log(myCounter.addOne()); // 出力: 1

しかし、private メソッドに直接アクセスしようとすると、エラーが発生します:

myCounter.#increment(); // エラー: プライベートメソッドはクラスの外からアクセスできません

Private メソッドは、内部実装の詳細を外部から隠すことで、カプセル化の維持に役立ちます。

challenge icon

チャレンジ

メッセージを格納するMessageBoxクラスが与えられています。あなたの課題は、メッセージを検証する#isValidMessage(text)というprivateメソッドを追加することです。このメソッドは次のように動作します:

  • テキストが空ではなく、100文字未満の場合はtrueを返す
  • それ以外の場合はfalseを返す

自分で試してみよう

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

// メッセージボックスを使用する
const box = new MessageBox();

console.log(box.setMessage("Hello"));    // "Message set!" (uses #isValidMessage)
console.log(box.setMessage(""));         // "Invalid message!" (uses #isValidMessage)
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

オブジェクト指向プログラミングのすべてのレッスン

自分で練習してみよう: JavaScriptオンラインコンパイラ