Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Statische Eigenschaften | Klassen
Fortgeschrittene JavaScript-Meisterschaft
course content

Kursinhalt

Fortgeschrittene JavaScript-Meisterschaft

Fortgeschrittene JavaScript-Meisterschaft

2. DOM-Manipulation
3. Ereignisse und Ereignisbehandlung
4. Asynchrones JavaScript und APIs

book
Statische Eigenschaften

In der Programmierung ermöglichen statische Eigenschaften, dass gemeinsame Informationen über alle Instanzen einer Klasse hinweg existieren, was sie ideal für konsistente Daten macht.

Was sind statische Eigenschaften?

Statische Eigenschaften gehören zur Klasse selbst und nicht zu einer bestimmten Instanz der Klasse. Das bedeutet, dass statische Eigenschaften unter allen Instanzen geteilt werden und direkt von der Klasse aus zugänglich sind, ohne dass ein Objekt instanziiert werden muss. Sie werden häufig für Hilfsfunktionen, Konstanten oder Daten verwendet, die über alle Instanzen einer Klasse hinweg geteilt werden sollen.

Betrachten Sie ein Unternehmen, bei dem jeder Mitarbeiter (eine Instanz einer Klasse) seine eigenen persönlichen Informationen (Name, Position) hat, aber die Adresse des Unternehmens (eine statische Eigenschaft) für alle Mitarbeiter gleich ist. Die Adresse gehört zum Unternehmen selbst, nicht zu einem einzelnen Mitarbeiter.

Wie man statische Eigenschaften deklariert und verwendet

Um eine statische Eigenschaft zu deklarieren, verwenden Sie das static Schlüsselwort innerhalb der Klasse. Statische Eigenschaften können nur mit dem Klassennamen und nicht von Klasseninstanzen aus zugegriffen werden.

1234567891011121314151617181920
class Company { static headquarters = '123 Main St'; // Static property constructor(name) { this.name = name; // Instance property } getCompanyInfo() { return `${this.name} is located at ${Company.headquarters}`; } } const google = new Company('Google'); console.log(google.getCompanyInfo()); // Output: Google is located at 123 Main St const amazon = new Company('Amazon'); console.log(amazon.getCompanyInfo()); // Output: Amazon is located at 123 Main St // Accessing the static property directly from the class console.log(Company.headquarters); // Output: 123 Main St
copy

In diesem Beispiel wird die Eigenschaft headquarters von allen Instanzen der Company-Klasse geteilt. Sowohl Google- als auch Amazon-Instanzen verweisen auf dieselbe Hauptsitzadresse. Statische Eigenschaften werden direkt mit dem Klassennamen (Company.headquarters) und nicht über Instanzen der Klasse aufgerufen.

Wie statische Eigenschaften unter allen Instanzen einer Klasse geteilt werden

Da statische Eigenschaften an die Klasse selbst gebunden sind, werden sie nicht für jede Instanz kopiert. Alle Instanzen der Klasse verweisen auf dieselbe statische Eigenschaft, was eine effiziente Möglichkeit darstellt, Daten zu speichern, die sich nicht pro Instanz ändern müssen.

Beispiel: Zähler für die Anzahl der erstellten Instanzen

Angenommen, wir möchten verfolgen, wie viele Instanzen einer Klasse erstellt wurden. Wir können eine statische Eigenschaft verwenden, um die Anzahl der Instanzen zu speichern, und sie jedes Mal inkrementieren, wenn eine neue Instanz erstellt wird.

123456789101112131415161718192021222324
class User { static count = 0; // Static property to track the number of users constructor(name) { this.name = name; User.count++; // Increment static property every time a new user is created } getUserInfo() { return `${this.name} is user number ${User.count}`; } } const user1 = new User('John'); const user2 = new User('Jane'); const user3 = new User('Alice'); // Accessing the static property directly from the class console.log(User.count); // Output: 3 (number of users created) // Each instance can see the total count of users console.log(user1.getUserInfo()); // Output: John is user number 3 console.log(user2.getUserInfo()); // Output: Jane is user number 3 console.log(user3.getUserInfo()); // Output: Alice is user number 3
copy

In diesem Beispiel wird jedes Mal, wenn ein neuer Benutzer erstellt wird, die statische count-Eigenschaft inkrementiert. Alle Instanzen der User-Klasse teilen denselben count-Wert, da er zur Klasse selbst gehört.

Vorteile von Statischen Eigenschaften

Da statische Eigenschaften über Instanzen hinweg geteilt werden, besteht keine Notwendigkeit, Daten zu duplizieren, was den Code sauberer und effizienter hält. Sie sind besonders nützlich, um Informationen zu speichern, die für alle Instanzen gleich sind, wie Konfigurationseinstellungen oder Konstanten, und helfen, Konsistenz im gesamten Code zu bewahren.

Praxisbeispiel: Anwendungskonfiguration

In einem realen Szenario könnten Sie ein Anwendungskonfigurationsobjekt haben, das gemeinsame Einstellungen in der gesamten Anwendung speichert. Statische Eigenschaften wären eine ausgezeichnete Wahl für solche Anwendungsfälle.

12345678910111213141516171819202122
class AppConfig { static appName = 'QuirkApp Solutions'; // Shared configuration setting static version = '1.3.14'; // Shared configuration setting constructor(user) { this.user = user; } getUserConfig() { return `${this.user} is using ${AppConfig.appName} version ${AppConfig.version}`; } } const user1 = new AppConfig('Alice'); const user2 = new AppConfig('Bob'); console.log(user1.getUserConfig()); // Output: Alice is using QuirkApp Solutions version 1.3.14 console.log(user2.getUserConfig()); // Output: Bob is using QuirkApp Solutions version 1.3.14 // Accessing static properties directly from the class console.log(AppConfig.appName); // Output: QuirkApp Solutions console.log(AppConfig.version); // Output: 1.3.14
copy

In diesem Beispiel werden der App-Name und die Version für alle Benutzer der Anwendung gemeinsam genutzt. Die statischen Eigenschaften appName und version gehören zur Klasse und werden nicht für jede Instanz repliziert.

1. Was ist eine statische Eigenschaft?

2. Wie greift man auf eine statische Eigenschaft zu?

3. Im folgenden Code, was wird console.log(User.count); ausgeben?

Was ist eine statische Eigenschaft?

Was ist eine statische Eigenschaft?

Wählen Sie die richtige Antwort aus

Wie greift man auf eine statische Eigenschaft zu?

Wie greift man auf eine statische Eigenschaft zu?

Wählen Sie die richtige Antwort aus

Im folgenden Code, was wird `console.log(User.count);` ausgeben?

Im folgenden Code, was wird console.log(User.count); ausgeben?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 11
We're sorry to hear that something went wrong. What happened?
some-alt