JavaScript 静的プロパティ

概要:このチュートリアルでは、クラスのJavaScript静的プロパティ、および静的メソッド、クラスコンストラクタ、その他のインスタンスメソッドで静的プロパティにアクセスする方法について学習します。

JavaScript 静的プロパティの紹介

静的メソッドと同様に、静的プロパティはクラスのすべてのインスタンスで共有されます。静的プロパティを定義するには、次のように`static`キーワードに続いてプロパティ名を記述します。

class Item {
  static count = 0;
}
Code language: JavaScript (javascript)

静的プロパティにアクセスするには、クラス名に続いて`.`演算子と静的プロパティ名を記述します。例えば

console.log(Item.count); // 0Code language: JavaScript (javascript)

静的メソッドで静的プロパティにアクセスするには、クラス名に続いて`.`演算子と静的プロパティ名を記述します。例えば

class Item {
  static count = 0;
  static getCount() {
    return Item.count;
  }
}

console.log(Item.getCount()); // 0Code language: JavaScript (javascript)

クラスコンストラクタまたはインスタンスメソッドで静的プロパティにアクセスするには、次の構文を使用します。

className.staticPropertyName;Code language: CSS (css)

または

this.constructor.staticPropertyName;Code language: CSS (css)

次の例では、クラスコンストラクタで`count`静的プロパティを増やします。

class Item {
  constructor(name, quantity) {
    this.name = name;
    this.quantity = quantity;
    this.constructor.count++;
  }
  static count = 0;
  static getCount() {
    return Item.count;
  }
}
Code language: JavaScript (javascript)

`Item`クラスの新しいインスタンスを作成すると、次のステートメントによって`count`静的プロパティが1増加します。

this.constructor.count++;Code language: CSS (css)

例えば

// Item class ...

let pen = new Item("Pen", 5);
let notebook = new Item("notebook", 10);

console.log(Item.getCount()); // 2Code language: JavaScript (javascript)

この例では、`Item`クラスのインスタンスを2つ作成します。これはクラスコンストラクタを呼び出します。クラスコンストラクタは呼び出されるたびに`count`プロパティを1増加させるため、`count`の値は2になります。

まとめ

class Item {
  constructor(name, quantity) {
    this.name = name;
    this.quantity = quantity;
    this.constructor.count++;
  }
  static count = 0;
  static getCount() {
    return Item.count;
  }
}

let pen = new Item('Pen', 5);
let notebook = new Item('notebook', 10);

console.log(Item.getCount()); // 2Code language: JavaScript (javascript)

概要

  • クラスの静的プロパティは、そのクラスのすべてのインスタンスで共有されます。
  • `static`キーワードを使用して静的プロパティを定義します。
  • 静的メソッドで静的プロパティにアクセスするには、`className.staticPropertyName`を使用します。
  • コンストラクタで静的プロパティにアクセスするには、`this.constructor.staticPropertyName`または`className.staticPropertyName`を使用します。
このチュートリアルは役に立ちましたか?