Utmaning: 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.
- Privat saldoegenskap:
- Deklarera en privat egenskap
#balanceiBankAccount-klassen.
- Deklarera en privat egenskap
- Konstruktor:
- Konstruktorn ska ta emot
ownerochinitialBalancesom parametrar; - Tilldela
ownertill en publik egenskap ochinitialBalancetill den privata egenskapen#balance.
- Konstruktorn ska ta emot
- Lägg till metoder:
- deposit: Definiera en metod som tar
amountsom parameter. Om beloppet är större än 0 skaamountläggas till på#balance; - withdraw: Definiera en metod som tar
amountsom parameter. Om beloppet är större än 0 och mindre än eller lika med#balance, skaamountdras 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".
- deposit: Definiera en metod som tar
123456789101112131415161718192021222324252627282930313233343536class 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);
- Deklarera en privat egenskap
#balanceiBankAccount-klassen; - I konstruktorn, tilldela
ownertill en publik egenskap ochinitialBalancetill den privata egenskapen#balance; - Definiera en
deposit-metod som taramountsom parameter. Kontrollera omamountär större än 0, lägg då tillamountpå#balance; - Definiera en
withdraw-metod som taramountsom parameter. Kontrollera omamountär större än 0 och mindre än eller lika med#balance, dra då avamountfrån#balance; - Definiera en
getBalance-metod som returnerar en sträng med ägarens namn och kontots saldo.
123456789101112131415161718192021222324252627282930313233343536class 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);
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
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
Utmaning: 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.
- Privat saldoegenskap:
- Deklarera en privat egenskap
#balanceiBankAccount-klassen.
- Deklarera en privat egenskap
- Konstruktor:
- Konstruktorn ska ta emot
ownerochinitialBalancesom parametrar; - Tilldela
ownertill en publik egenskap ochinitialBalancetill den privata egenskapen#balance.
- Konstruktorn ska ta emot
- Lägg till metoder:
- deposit: Definiera en metod som tar
amountsom parameter. Om beloppet är större än 0 skaamountläggas till på#balance; - withdraw: Definiera en metod som tar
amountsom parameter. Om beloppet är större än 0 och mindre än eller lika med#balance, skaamountdras 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".
- deposit: Definiera en metod som tar
123456789101112131415161718192021222324252627282930313233343536class 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);
- Deklarera en privat egenskap
#balanceiBankAccount-klassen; - I konstruktorn, tilldela
ownertill en publik egenskap ochinitialBalancetill den privata egenskapen#balance; - Definiera en
deposit-metod som taramountsom parameter. Kontrollera omamountär större än 0, lägg då tillamountpå#balance; - Definiera en
withdraw-metod som taramountsom parameter. Kontrollera omamountär större än 0 och mindre än eller lika med#balance, dra då avamountfrån#balance; - Definiera en
getBalance-metod som returnerar en sträng med ägarens namn och kontots saldo.
123456789101112131415161718192021222324252627282930313233343536class 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);
Tack för dina kommentarer!