JavaScriptクラスにおけるメソッドの定義
メニューを表示するにはスワイプしてください
コンストラクターを使ってプロパティを追加する方法を理解したので、次はクラスにメソッドを追加する方法を見ていきます。
クラスメソッドの定義と利用
これらのメソッドは通常、オブジェクトのプロパティを操作し、そのデータとやり取りする手段を提供します。
クラスメソッドを定義するには、functionキーワードを使わずにクラス内で関数を宣言します。
class Animal {
constructor(name, type) {
this.name = name;
this.type = type;
}
// Class method
getInfo() {
return `${this.name} is a ${this.type} animal.`;
}
}
この例では、getInfo は Animal クラスのメソッドです。Animal の任意のインスタンスは、このメソッドを呼び出して、その特定のインスタンスに関する情報を取得できます。
クラスのインスタンスにメソッドが関連付けられる仕組み
クラスのインスタンスを作成すると、クラス内で定義されたメソッドは自動的にそのインスタンスで利用可能になります。これらのメソッドは、this キーワードを使ってインスタンスのプロパティへアクセスし、操作できます。this は現在のオブジェクトを指します。
メソッドは、各オブジェクト(インスタンス)が持つツールのようなものと考えられます。各オブジェクトは独自のデータ(プロパティ)を持っていますが、そのデータを操作するための同じツール(メソッド)を共有しています。
例を見てみましょう:
1234567891011121314151617class Animal { constructor(name, type) { this.name = name; this.type = type; } // Class method getInfo() { return `${this.name} is a ${this.type} animal.`; } } const lion = new Animal('Lion', 'Wild'); console.log(lion.getInfo()); // Output: Lion is a Wild animal. const pig = new Animal('Pig', 'Domestic'); console.log(pig.getInfo()); // Output: Pig is a Domestic animal.
この例では、lion と pig の両方が Animal クラスのインスタンスです。getInfo メソッドは両方で利用可能であり、呼び出された特定のインスタンスのプロパティに基づいて異なる結果を返します。これは、メソッドがインスタンス間で共有されつつ、それぞれのデータに対して動作することを示しています。
クラスメソッドを使う理由
クラスメソッドは、オブジェクト固有の動作を定義します。コードのモジュール化や保守性の向上、責任の明確な分離を実現します。オブジェクトのプロパティを直接操作するのではなく、クラスメソッドを通じてオブジェクトのデータに安全にアクセスし、変更する方法を提供します。
オブジェクトの状態を変更するメソッドの例:
1234567891011121314151617181920class Animal { constructor(name, type) { this.name = name; this.type = type; } getInfo() { return `${this.name} is a ${this.type} animal.`; } changeType(newType) { this.type = newType; } } const lion = new Animal('Lion', 'Wild'); console.log(lion.getInfo()); // Output: Lion is a Wild animal. lion.changeType('Domestic'); console.log(lion.getInfo()); // Output: Lion is a Domestic animal.
この例では、changeType メソッドによってオブジェクトの type プロパティを更新可能。メソッドがオブジェクトの状態に直接影響するロジックをカプセル化できることを示している。
1. クラスメソッドとは何か?
2. クラス内でインスタンスが利用できる speak というメソッドをどのように定義するか?
3. 次のコードは何を出力しますか?
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください