Skip to content

Static Members

Statische Properties und Methoden haben keinen Zugriff auf Instanz-Eigenschaften und -Methoden.

ECMAScript 5

Um wenigstens eine Zuordnung zur Klasse zu haben, wurden statische Member als weitere Properties auf der Konstruktor-Funktion definiert. Prinzipiell sind statische Member nichts weiter als globale freie Member.

js
function Klasse() {
  this.instanceProp = 17;
}
Klasse.prototype.instanceMethod = function () {
  // Access static props
  const value = Klasse.staticProp;
  Klasse.staticFunc();
};

Klasse.staticProp = 42;
Klasse.staticFunc = function () {
  Klasse.staticProp += 1;
};
function Klasse() {
  this.instanceProp = 17;
}
Klasse.prototype.instanceMethod = function () {
  // Access static props
  const value = Klasse.staticProp;
  Klasse.staticFunc();
};

Klasse.staticProp = 42;
Klasse.staticFunc = function () {
  Klasse.staticProp += 1;
};

ECMAScript 2015 und 2022

Statische Methoden wurden schon mit ECMAScript 2015 standardisiert, statische Properties inclusive privater statischer Member werden erst mit ECMASCript 2022 im Standard formuliert.

js
class Klasse {
  static staticProp = 42; // ECMAScript 2022
  static #privateStatic = 17; // ECMAScript 2022

  static staticMethod() {} // ECMAScript 2015
  static #privateMethod() {} // ECMAScript 2022
}
class Klasse {
  static staticProp = 42; // ECMAScript 2022
  static #privateStatic = 17; // ECMAScript 2022

  static staticMethod() {} // ECMAScript 2015
  static #privateMethod() {} // ECMAScript 2022
}

WARNING

Es gibt einige Fallstricke der private Member beim Zugriff von Kind-Klassen aus. Insbesondere gibt es auch (noch) keine Entsprechung für eine protected Kapselung. Siehe hierzu im MDN.