Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Herausforderung: Implementierung Privater Properties in Einer Klasse | 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
Herausforderung: Implementierung Privater Properties in Einer Klasse

Aufgabe

Sie erstellen eine BankAccount-Klasse, um die Bankkonten der Benutzer sicher zu verwalten. Jedes Konto hat einen Besitzer und ein Guthaben, aber Sie möchten, dass das Guthaben vor direktem Zugriff geschützt ist. Ihr Ziel ist es, private Eigenschaften zu verwenden, um unbeabsichtigte Änderungen am Guthaben zu verhindern, während ein kontrollierter Zugriff über Methoden ermöglicht wird.

  1. Private Guthabeneigenschaft:
    • Deklarieren Sie innerhalb der BankAccount-Klasse eine private Eigenschaft #balance.
  2. Konstruktor:
    • Der Konstruktor sollte owner und initialBalance als Parameter akzeptieren;
    • Weisen Sie owner einer öffentlichen Eigenschaft und initialBalance der privaten #balance-Eigenschaft zu.
  3. Methoden hinzufügen:
    • deposit: Definieren Sie eine Methode, die amount als Parameter nimmt. Wenn der Betrag größer als 0 ist, sollte er amount zu #balance hinzufügen;
    • withdraw: Definieren Sie eine Methode, die amount als Parameter nimmt. Wenn der Betrag größer als 0 und kleiner oder gleich #balance ist, sollte er amount von #balance abziehen;
    • getBalance: Definieren Sie eine Methode, die einen String mit dem Namen des Besitzers und dem Kontostand zurückgibt, z.B. "Kontostand für John: $1500".
123456789101112131415161718192021222324252627282930313233343536
class BankAccount { #_____; // Declare private property constructor(owner, initialBalance) { this._____ = owner; this.#_____ = initialBalance; } deposit(_____) { if (_____) { this.#_____ += _____; } } withdraw(_____) { if (_____ && _____) { this.#_____ -= _____; } } getBalance() { return `Account balance for ${this._____}: $${this.#_____}`; } } // Testing const account1 = new BankAccount('Alice', 1000); account1.deposit(500); console.log(account1.getBalance()); // Expected: Account balance for Alice: $1500 account1.withdraw(300); console.log(account1.getBalance()); // Expected: Account balance for Alice: $1200 // Attempt direct access (should cause an error) // console.log(account1.#balance);
copy
  • Deklariere eine private Eigenschaft #balance in der BankAccount-Klasse;
  • Weise im Konstruktor owner einer öffentlichen Eigenschaft und initialBalance der privaten #balance-Eigenschaft zu;
  • Definiere eine deposit-Methode, die amount als Parameter nimmt. Überprüfe, ob amount größer als 0 ist, und addiere dann amount zu #balance;
  • Definiere eine withdraw-Methode, die amount als Parameter nimmt. Überprüfe, ob amount größer als 0 und kleiner oder gleich #balance ist, und subtrahiere dann amount von #balance;
  • Definiere eine getBalance-Methode, die einen String mit dem Namen des Besitzers und dem Kontostand zurückgibt.
123456789101112131415161718192021222324252627282930313233343536
class BankAccount { #balance; // Declare private property constructor(owner, initialBalance) { this.owner = owner; this.#balance = initialBalance; } deposit(amount) { if (amount > 0) { this.#balance += amount; } } withdraw(amount) { if (amount > 0 && amount <= this.#balance) { this.#balance -= amount; } } getBalance() { return `Account balance for ${this.owner}: $${this.#balance}`; } } // Testing const account1 = new BankAccount('Alice', 1000); account1.deposit(500); console.log(account1.getBalance()); // Output: Account balance for Alice: $1500 account1.withdraw(300); console.log(account1.getBalance()); // Output: Account balance for Alice: $1200 // Attempt direct access (should cause an error) // console.log(account1.#balance);
copy

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

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