JavaScript 目次 - ray88’s diary
■静的メンバー
クラスに定義するメンバーにはインスタンスに対して使用するのではなく、
インスタンス化しなくても直接的に使用できるプロパティおよびメソッドを
定義することができ、それぞれ静的プロパティ、静的メソッドという。
それらをまとめて静的メンバーという。
■静的メンバーのメリット
クラスと静的メンバーをグローバル領域に定義すればグローバル変数やグローバル関数
と同様に プロジェクトのどこからでも利用できるプロパティ・メソッドとなる。
しかし、静的メンバーはクラスを指定してアクセスするため、他の変数と競合すること
を避けられるというメリットがある
※JavaScriptの組み込みオブジェクトやGASのクラスでは多くの静的メンバーが
用意されている。例えばMathオブジェクトに至ってはそのすべてが
静的メンバーです。
【構文】
クラス名.プロパティ名
【構文】
クラス名.メソッド名(引数1,引数2,・・・)
【構文】
クラスに静的プロパティを追加するには、クラスを定義するclass文の後に書きの様に記述する
クラス名.プロパティ名 = 値
【構文】
クラスに静的メソッドを追加するには、クラスを定義するclass文内に以下の様に
staticキーワードを付与したメソッド定義を記述する
static クラス名.メソッド名(仮引数1,仮引数2,・・・){ //処理 }
【構文】
静的プロパティと同様に、class文の後に関数リテラルを代入することでも
静的メソッドの定義は可能
static クラス名.メソッド名 = function(仮引数1,仮引数2,・・・){ //処理 }
【サンプルコード】
function myFunction(){ //クラス「Person」を定義 class Person{ constructor(name,age){ //thisキーワードを用いてnameプロパティ、ageプロパティを定義 this.name = name; this.age = age; } //クラスPersonに静的メソッドgreetを追加 static greet(name){ console.log(`Hello! I am ${name}!`); } } //クラスPersonに静的プロパティjobを追加 Person.job = 'Engineer'; console.log(Person.job); Person.greet('Bob'); }