Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ JavaScriptにおける静的メソッドの使用 | JavaScriptクラスと継承の習得
JavaScriptロジックとインタラクション

bookJavaScriptにおける静的メソッドの使用

メニューを表示するにはスワイプしてください

静的メソッドは、クラスレベルで共有される機能を提供し、インスタンスを作成せずにアクセス可能。

静的メソッドとは

電力会社をイメージしてください。会社自体(クラス)が電力を供給しますが、あなた(インスタンス)が自宅に発電所を作る必要はありません。その代わりに、会社のサービス(静的メソッド)に直接アクセスします。

静的メソッドの定義と使用方法

静的メソッドは static キーワードを使って宣言します。これらはクラスから直接呼び出すことができ、インスタンスのプロパティやメソッドにはアクセスできません。静的メソッドはクラスレベルで動作します。

123456789101112131415
class MathUtils { // Static method to calculate the square of a number static square(number) { return number * number; } // Static method to calculate the cube of a number static cube(number) { return number * number * number; } } // Calling static methods directly from the class console.log(MathUtils.square(4)); // Output: 16 console.log(MathUtils.cube(3)); // Output: 27
copy

この例では、squarecube メソッドは静的メソッドであり、MathUtils クラスに属しています。これらはクラス自身から直接呼び出すことができ、特定のインスタンスに関連付ける必要はありません。これらのメソッドは数学的な処理を行い、クラス全体で共有されます。

静的メソッドを使用する理由

静的メソッドは、クラスに関連する機能を提供したいが、個々のインスタンスに結び付ける必要がない場合に便利です。ユーティリティ関数、ヘルパーメソッド、またはクラス全体に広く適用されるロジックによく使用されます。

  • 静的メソッドは、数学計算、日付操作、文字列フォーマットなど、普遍的に適用される操作によく使われます;
  • 静的メソッドは、特定の方法でインスタンスを生成したり、クラスレベルの設定を管理したり、クラス全体のデータアクセスを提供したりするなど、クラス自体に関わる操作にも利用できます。

例:静的ユーティリティメソッド

実際の例として、User クラスに2人のユーザーIDを比較する静的メソッドを持たせます。このメソッドは個々のユーザーデータとやり取りする必要がないため、クラスの静的メソッドとして実装できます。

12345678910111213141516171819
class User { constructor(id, name) { this.id = id; this.name = name; } // Static method to compare user IDs static compareIds(user1, user2) { return user1.id === user2.id; } } const user1 = new User(101, 'Alice'); const user2 = new User(102, 'Bob'); const user3 = new User(101, 'Charlie'); // Using the static method to compare user IDs console.log(User.compareIds(user1, user2)); // Output: false console.log(User.compareIds(user1, user3)); // Output: true
copy

この例では、compareIds 静的メソッドは User クラスに属しており、個々のプロパティやメソッドにアクセスすることなく、2つの User インスタンスのIDを比較することができます。

静的メソッドとインスタンスメソッドの主な違い

実例:アプリケーションユーティリティクラス

アプリケーションがデータを記録する必要があるシナリオを考えます。Logger クラスは、異なるレベル(info、warning、error)でメッセージを記録する静的メソッドを持つことができます。これらのメソッドは、ロガーのインスタンスを作成せずにグローバルにアクセスできます。

123456789101112131415161718
class Logger { static info(message) { console.log(`INFO: ${message}`); } static warning(message) { console.warn(`WARNING: ${message}`); } static error(message) { console.error(`ERROR: ${message}`); } } // Calling static methods directly from the Logger class Logger.info('Application started'); Logger.warning('Low disk space'); Logger.error('Uncaught exception occurred');
copy

この例では、static メソッドである infowarningerror は、異なるレベルでメッセージを記録するためにグローバルに呼び出せるユーティリティ関数です。これらのメソッドを使用するために Logger のインスタンスを作成する必要はありません。

1. 静的メソッドとは何ですか?

2. クラスで静的メソッドを定義する方法はどれですか?

question mark

静的メソッドとは何ですか?

正しい答えを選んでください

question mark

クラスで静的メソッドを定義する方法はどれですか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 1.  12

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 1.  12
some-alt