Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Utmaning: Implementera Privata Egenskaper i en Klass | Bemästra JavaScript-klasser och Arv
Avancerad JavaScript-mästerskap

bookUtmaning: Implementera Privata Egenskaper i en Klass

Uppgift

Du skapar en BankAccount-klass för att hantera användares bankkonton på ett säkert sätt. Varje konto har en ägare och ett saldo, men du vill skydda saldot från direkt åtkomst. Målet är att använda privata egenskaper för att förhindra oavsiktliga ändringar av saldot samtidigt som kontrollerad åtkomst tillåts via metoder.

  1. Privat saldoegenskap:
    • Deklarera en privat egenskap #balance i BankAccount-klassen.
  2. Konstruktor:
    • Konstruktorn ska ta emot owner och initialBalance som parametrar;
    • Tilldela owner till en publik egenskap och initialBalance till den privata egenskapen #balance.
  3. Lägg till metoder:
    • deposit: Definiera en metod som tar amount som parameter. Om beloppet är större än 0 ska amount läggas till på #balance;
    • withdraw: Definiera en metod som tar amount som parameter. Om beloppet är större än 0 och mindre än eller lika med #balance, ska amount dras från #balance;
    • getBalance: Definiera en metod som returnerar en sträng med ägarens namn och kontots saldo, t.ex. "Account balance for 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
  • Deklarera en privat egenskap #balance i BankAccount-klassen;
  • I konstruktorn, tilldela owner till en publik egenskap och initialBalance till den privata egenskapen #balance;
  • Definiera en deposit-metod som tar amount som parameter. Kontrollera om amount är större än 0, lägg då till amount#balance;
  • Definiera en withdraw-metod som tar amount som parameter. Kontrollera om amount är större än 0 och mindre än eller lika med #balance, dra då av amount från #balance;
  • Definiera en getBalance-metod som returnerar en sträng med ägarens namn och kontots saldo.
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

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 8

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Suggested prompts:

Can you explain how private properties work in JavaScript classes?

What happens if I try to access the #balance property directly from outside the class?

Can you show how to add error handling for invalid deposit or withdrawal amounts?

Awesome!

Completion rate improved to 2.22

bookUtmaning: Implementera Privata Egenskaper i en Klass

Svep för att visa menyn

Uppgift

Du skapar en BankAccount-klass för att hantera användares bankkonton på ett säkert sätt. Varje konto har en ägare och ett saldo, men du vill skydda saldot från direkt åtkomst. Målet är att använda privata egenskaper för att förhindra oavsiktliga ändringar av saldot samtidigt som kontrollerad åtkomst tillåts via metoder.

  1. Privat saldoegenskap:
    • Deklarera en privat egenskap #balance i BankAccount-klassen.
  2. Konstruktor:
    • Konstruktorn ska ta emot owner och initialBalance som parametrar;
    • Tilldela owner till en publik egenskap och initialBalance till den privata egenskapen #balance.
  3. Lägg till metoder:
    • deposit: Definiera en metod som tar amount som parameter. Om beloppet är större än 0 ska amount läggas till på #balance;
    • withdraw: Definiera en metod som tar amount som parameter. Om beloppet är större än 0 och mindre än eller lika med #balance, ska amount dras från #balance;
    • getBalance: Definiera en metod som returnerar en sträng med ägarens namn och kontots saldo, t.ex. "Account balance for 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
  • Deklarera en privat egenskap #balance i BankAccount-klassen;
  • I konstruktorn, tilldela owner till en publik egenskap och initialBalance till den privata egenskapen #balance;
  • Definiera en deposit-metod som tar amount som parameter. Kontrollera om amount är större än 0, lägg då till amount#balance;
  • Definiera en withdraw-metod som tar amount som parameter. Kontrollera om amount är större än 0 och mindre än eller lika med #balance, dra då av amount från #balance;
  • Definiera en getBalance-metod som returnerar en sträng med ägarens namn och kontots saldo.
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

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 8
some-alt