Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Verwaltung von Eigenschaften mit Gettern und Settern | JavaScript-Klassen und Vererbung Meistern
Fortgeschrittene JavaScript-Beherrschung

bookVerwaltung von Eigenschaften mit Gettern und Settern

Getter und Setter bieten eine leistungsstarke Möglichkeit, den Zugriff auf die Eigenschaften eines Objekts in JavaScript zu steuern.

Was sind Getter und Setter?

In JavaScript sind Getter und Setter spezielle Methoden, die einen kontrollierten Zugriff auf die Eigenschaften eines Objekts ermöglichen. Sie bieten die Flexibilität, festzulegen, wie eine Eigenschaft abgerufen und geändert wird, während der interne Zustand des Objekts geschützt bleibt.

  • Getter: Methode zum Abrufen (Lesen) des Werts einer Eigenschaft;
  • Setter: Methode zum Setzen oder Aktualisieren des Werts einer Eigenschaft.

Stellen Sie sich einen Banktresor vor. Der Tresor enthält wertvolle Gegenstände (private Eigenschaften), und der Bankangestellte (Getter/Setter) fungiert als Vermittler. Sie können nicht direkt auf den Tresor zugreifen, aber der Angestellte kann Gegenstände für Sie gemäß bestimmten Regeln und Validierungen abrufen oder aktualisieren.

Definition und Verwendung von Gettern und Settern

Getter und Setter werden mit den Schlüsselwörtern get und set innerhalb einer Klasse definiert. Beim Zugriff auf eine Eigenschaft wird automatisch der Getter aufgerufen. Ebenso wird beim Ändern einer Eigenschaft der Setter aufgerufen, anstatt die Eigenschaft direkt zu verändern.

12345678910111213141516171819202122232425262728293031323334
class Animal { #type; // Private field constructor(name, type) { this.name = name; this.#type = type; // Assigning the private field } // Getter for the type property get type() { return this.#type; } // Setter for the type property set type(newType) { if (newType) { this.#type = newType; } else { console.log('Invalid type'); } } } const lion = new Animal('Lion', 'Wild'); // Using getter to access the private type console.log(lion.type); // Output: Wild // Using setter to modify the private type lion.type = 'Domestic'; console.log(lion.type); // Output: Domestic // Trying to set an invalid value lion.type = ''; // Output: Invalid type
copy

In diesem Beispiel ist #type eine private Eigenschaft. Ein Getter (get type()) wird definiert, um ihren Wert abzurufen, und ein Setter (set type(newType)), um sie zu ändern. Der Setter enthält eine Validierung, um das Setzen eines ungültigen Werts zu verhindern. Dies zeigt, wie Aktualisierungen privater Daten kontrolliert werden können.

Vorteile von Gettern und Settern

Kontrollierter Zugriff

  • Getter ermöglichen die Definition, wie auf den Wert einer Eigenschaft zugegriffen wird, sodass der Wert vor der Rückgabe verarbeitet oder manipuliert werden kann;
  • Setter bieten Kontrolle darüber, wie eine Eigenschaft aktualisiert wird, wodurch eine Validierung oder Umwandlung der Daten vor der Zuweisung an ein privates Feld möglich ist.

Datenschutz

  • Durch die Verwendung von Gettern und Settern wird der interne Zustand eines Objekts geschützt, indem eine kontrollierte Schnittstelle für die Interaktion bereitgestellt wird;
  • Private Eigenschaften können verborgen bleiben, und es kann nur die notwendige Information für externen Code offengelegt werden.

Flexibilität

Getter und Setter ermöglichen das Hinzufügen zusätzlicher Logik—wie Validierung oder Protokollierung—beim Zugriff auf oder der Änderung von Eigenschaften, ohne die Interaktion des externen Codes mit dem Objekt zu verändern.

Beispiel: Benutzerkonto mit Passwortvalidierung

Stellen Sie sich vor, Sie verwalten Benutzerkonten, bei denen Passwörter bestimmte Sicherheitsstandards erfüllen müssen. Mit einem Setter können Sie die Passwortstärke erzwingen, während ein Getter eine maskierte Version des Passworts für Anzeigezwecke bereitstellen könnte.

12345678910111213141516171819202122232425262728293031323334
class UserAccount { #password; // Private field constructor(username, password) { this.username = username; this.#password = password; } // Getter for password (returning a masked version) get password() { return '*'.repeat(this.#password.length); // Mask the password when retrieved } // Setter for password with validation set password(newPassword) { if (newPassword.length >= 8) { this.#password = newPassword; } else { console.log('Password must be at least 8 characters long'); } } } const user = new UserAccount('nick_feather', 'secret123'); // Accessing the password using the getter (masked) console.log(user.password); // Output: ********* // Setting a new valid password using the setter user.password = 'strongPassword123'; console.log(user.password); // Output: *************** // Trying to set an invalid password user.password = '123'; // Output: Password must be at least 8 characters long
copy

In diesem Beispiel gibt der Getter eine maskierte Version des Passworts zurück, um den tatsächlichen Wert zu verbergen, und der Setter erzwingt eine Passwortvalidierung, indem sichergestellt wird, dass das Passwort mindestens 8 Zeichen lang ist.

Beispiel mit Validierungslogik unter Verwendung von Gettern und Settern

Hier ist ein weiteres Beispiel, in dem das Alter einer Person verwaltet und sichergestellt wird, dass der Wert innerhalb eines angemessenen Bereichs bleibt:

12345678910111213141516171819202122232425262728293031323334
class Person { #age; // Private field constructor(name, age) { this.name = name; this.#age = age; } // Getter for age get age() { return this.#age; } // Setter for age with validation set age(newAge) { if (newAge > 0 && newAge < 120) { this.#age = newAge; } else { console.log('Invalid age'); } } } const peter = new Person('Peter', 30); // Accessing the age using the getter console.log(peter.age); // Output: 30 // Setting a new valid age using the setter peter.age = 35; console.log(peter.age); // Output: 35 // Trying to set an invalid age peter.age = 150; // Output: Invalid age
copy

Dieses Beispiel zeigt, wie ein Setter sicherstellen kann, dass ein Alter innerhalb eines gültigen Bereichs bleibt und so verhindert wird, dass ungültige Daten gespeichert werden.

1. Was ist der Hauptzweck der Verwendung von Gettern?

2. Was gibt console.log(user.password); im folgenden Code aus?

question mark

Was ist der Hauptzweck der Verwendung von Gettern?

Select the correct answer

question mark

Was gibt console.log(user.password); im folgenden Code aus?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 9

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Awesome!

Completion rate improved to 2.22

bookVerwaltung von Eigenschaften mit Gettern und Settern

Swipe um das Menü anzuzeigen

Getter und Setter bieten eine leistungsstarke Möglichkeit, den Zugriff auf die Eigenschaften eines Objekts in JavaScript zu steuern.

Was sind Getter und Setter?

In JavaScript sind Getter und Setter spezielle Methoden, die einen kontrollierten Zugriff auf die Eigenschaften eines Objekts ermöglichen. Sie bieten die Flexibilität, festzulegen, wie eine Eigenschaft abgerufen und geändert wird, während der interne Zustand des Objekts geschützt bleibt.

  • Getter: Methode zum Abrufen (Lesen) des Werts einer Eigenschaft;
  • Setter: Methode zum Setzen oder Aktualisieren des Werts einer Eigenschaft.

Stellen Sie sich einen Banktresor vor. Der Tresor enthält wertvolle Gegenstände (private Eigenschaften), und der Bankangestellte (Getter/Setter) fungiert als Vermittler. Sie können nicht direkt auf den Tresor zugreifen, aber der Angestellte kann Gegenstände für Sie gemäß bestimmten Regeln und Validierungen abrufen oder aktualisieren.

Definition und Verwendung von Gettern und Settern

Getter und Setter werden mit den Schlüsselwörtern get und set innerhalb einer Klasse definiert. Beim Zugriff auf eine Eigenschaft wird automatisch der Getter aufgerufen. Ebenso wird beim Ändern einer Eigenschaft der Setter aufgerufen, anstatt die Eigenschaft direkt zu verändern.

12345678910111213141516171819202122232425262728293031323334
class Animal { #type; // Private field constructor(name, type) { this.name = name; this.#type = type; // Assigning the private field } // Getter for the type property get type() { return this.#type; } // Setter for the type property set type(newType) { if (newType) { this.#type = newType; } else { console.log('Invalid type'); } } } const lion = new Animal('Lion', 'Wild'); // Using getter to access the private type console.log(lion.type); // Output: Wild // Using setter to modify the private type lion.type = 'Domestic'; console.log(lion.type); // Output: Domestic // Trying to set an invalid value lion.type = ''; // Output: Invalid type
copy

In diesem Beispiel ist #type eine private Eigenschaft. Ein Getter (get type()) wird definiert, um ihren Wert abzurufen, und ein Setter (set type(newType)), um sie zu ändern. Der Setter enthält eine Validierung, um das Setzen eines ungültigen Werts zu verhindern. Dies zeigt, wie Aktualisierungen privater Daten kontrolliert werden können.

Vorteile von Gettern und Settern

Kontrollierter Zugriff

  • Getter ermöglichen die Definition, wie auf den Wert einer Eigenschaft zugegriffen wird, sodass der Wert vor der Rückgabe verarbeitet oder manipuliert werden kann;
  • Setter bieten Kontrolle darüber, wie eine Eigenschaft aktualisiert wird, wodurch eine Validierung oder Umwandlung der Daten vor der Zuweisung an ein privates Feld möglich ist.

Datenschutz

  • Durch die Verwendung von Gettern und Settern wird der interne Zustand eines Objekts geschützt, indem eine kontrollierte Schnittstelle für die Interaktion bereitgestellt wird;
  • Private Eigenschaften können verborgen bleiben, und es kann nur die notwendige Information für externen Code offengelegt werden.

Flexibilität

Getter und Setter ermöglichen das Hinzufügen zusätzlicher Logik—wie Validierung oder Protokollierung—beim Zugriff auf oder der Änderung von Eigenschaften, ohne die Interaktion des externen Codes mit dem Objekt zu verändern.

Beispiel: Benutzerkonto mit Passwortvalidierung

Stellen Sie sich vor, Sie verwalten Benutzerkonten, bei denen Passwörter bestimmte Sicherheitsstandards erfüllen müssen. Mit einem Setter können Sie die Passwortstärke erzwingen, während ein Getter eine maskierte Version des Passworts für Anzeigezwecke bereitstellen könnte.

12345678910111213141516171819202122232425262728293031323334
class UserAccount { #password; // Private field constructor(username, password) { this.username = username; this.#password = password; } // Getter for password (returning a masked version) get password() { return '*'.repeat(this.#password.length); // Mask the password when retrieved } // Setter for password with validation set password(newPassword) { if (newPassword.length >= 8) { this.#password = newPassword; } else { console.log('Password must be at least 8 characters long'); } } } const user = new UserAccount('nick_feather', 'secret123'); // Accessing the password using the getter (masked) console.log(user.password); // Output: ********* // Setting a new valid password using the setter user.password = 'strongPassword123'; console.log(user.password); // Output: *************** // Trying to set an invalid password user.password = '123'; // Output: Password must be at least 8 characters long
copy

In diesem Beispiel gibt der Getter eine maskierte Version des Passworts zurück, um den tatsächlichen Wert zu verbergen, und der Setter erzwingt eine Passwortvalidierung, indem sichergestellt wird, dass das Passwort mindestens 8 Zeichen lang ist.

Beispiel mit Validierungslogik unter Verwendung von Gettern und Settern

Hier ist ein weiteres Beispiel, in dem das Alter einer Person verwaltet und sichergestellt wird, dass der Wert innerhalb eines angemessenen Bereichs bleibt:

12345678910111213141516171819202122232425262728293031323334
class Person { #age; // Private field constructor(name, age) { this.name = name; this.#age = age; } // Getter for age get age() { return this.#age; } // Setter for age with validation set age(newAge) { if (newAge > 0 && newAge < 120) { this.#age = newAge; } else { console.log('Invalid age'); } } } const peter = new Person('Peter', 30); // Accessing the age using the getter console.log(peter.age); // Output: 30 // Setting a new valid age using the setter peter.age = 35; console.log(peter.age); // Output: 35 // Trying to set an invalid age peter.age = 150; // Output: Invalid age
copy

Dieses Beispiel zeigt, wie ein Setter sicherstellen kann, dass ein Alter innerhalb eines gültigen Bereichs bleibt und so verhindert wird, dass ungültige Daten gespeichert werden.

1. Was ist der Hauptzweck der Verwendung von Gettern?

2. Was gibt console.log(user.password); im folgenden Code aus?

question mark

Was ist der Hauptzweck der Verwendung von Gettern?

Select the correct answer

question mark

Was gibt console.log(user.password); im folgenden Code aus?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 9
some-alt