Verwaltung 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.
12345678910111213141516171819202122232425262728293031323334class 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
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.
12345678910111213141516171819202122232425262728293031323334class 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
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:
12345678910111213141516171819202122232425262728293031323334class 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
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?
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Awesome!
Completion rate improved to 2.22
Verwaltung 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.
12345678910111213141516171819202122232425262728293031323334class 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
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.
12345678910111213141516171819202122232425262728293031323334class 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
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:
12345678910111213141516171819202122232425262728293031323334class 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
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?
Danke für Ihr Feedback!