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
#balance
iBankAccount
-klassen.
- Deklarera en privat egenskap
- Konstruktor:
- Konstruktorn ska ta emot
owner
ochinitialBalance
som parametrar; - Tilldela
owner
till en publik egenskap ochinitialBalance
till den privata egenskapen#balance
.
- Konstruktorn ska ta emot
- Lägg till metoder:
- deposit: Definiera en metod som tar
amount
som parameter. Om beloppet är större än 0 skaamount
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
, skaamount
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"
.
- 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
#balance
iBankAccount
-klassen; - I konstruktorn, tilldela
owner
till en publik egenskap ochinitialBalance
till den privata egenskapen#balance
; - Definiera en
deposit
-metod som taramount
som parameter. Kontrollera omamount
är större än 0, lägg då tillamount
på#balance
; - Definiera en
withdraw
-metod som taramount
som parameter. Kontrollera omamount
är större än 0 och mindre än eller lika med#balance
, dra då avamount
frå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
#balance
iBankAccount
-klassen.
- Deklarera en privat egenskap
- Konstruktor:
- Konstruktorn ska ta emot
owner
ochinitialBalance
som parametrar; - Tilldela
owner
till en publik egenskap ochinitialBalance
till den privata egenskapen#balance
.
- Konstruktorn ska ta emot
- Lägg till metoder:
- deposit: Definiera en metod som tar
amount
som parameter. Om beloppet är större än 0 skaamount
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
, skaamount
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"
.
- 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
#balance
iBankAccount
-klassen; - I konstruktorn, tilldela
owner
till en publik egenskap ochinitialBalance
till den privata egenskapen#balance
; - Definiera en
deposit
-metod som taramount
som parameter. Kontrollera omamount
är större än 0, lägg då tillamount
på#balance
; - Definiera en
withdraw
-metod som taramount
som parameter. Kontrollera omamount
är större än 0 och mindre än eller lika med#balance
, dra då avamount
frå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!