Phương thức thay đổi trạng thái
Thuộc phần Lập trình hướng đối tượng trong hành trình JavaScript của Coddy. Bài học 15 trên 56.
Các phương thức (method) trong lớp JavaScript có thể thay đổi trạng thái (thuộc tính) của một đối tượng. Đây là một trong những tính năng chính của lập trình hướng đối tượng.
Hãy tạo một lớp BankAccount đơn giản:
class BankAccount {
constructor(owner, balance = 0) {
this.owner = owner;
this.balance = balance;
}
deposit(amount) {
this.balance += amount;
}
}Bây giờ, hãy tạo một đối tượng và thay đổi trạng thái của nó:
const johnsAccount = new BankAccount("John", 100);
console.log(johnsAccount.balance); // Đầu ra: 100
johnsAccount.deposit(50);
console.log(johnsAccount.balance); // Đầu ra: 150Trong ví dụ này, phương thức deposit() thay đổi trạng thái nội bộ (thuộc tính balance) của đối tượng BankAccount.
Chúng ta có thể thêm các phương thức thay đổi trạng thái:
class BankAccount {
constructor(owner, balance = 0) {
this.owner = owner;
this.balance = balance;
}
deposit(amount) {
this.balance += amount;
}
withdraw(amount) {
if (amount <= this.balance) {
this.balance -= amount;
}
}
transfer(amount, toAccount) {
if (amount <= this.balance) {
this.balance -= amount;
toAccount.balance += amount;
}
}
}Giờ đây, chúng ta có thể thao tác với tài khoản ngân hàng theo nhiều cách.
Thử thách
Bạn được cung cấp một lớp Thermostat. Nhiệm vụ của bạn là thêm các phương thức để thay đổi trạng thái nhiệt độ của lớp:
increaseTemp()- tăng nhiệt độ thêm 1 độdecreaseTemp()- giảm nhiệt độ đi 1 độ
Tự làm thử
import { Thermostat } from './thermostat.js';
// Đoạn code kiểm thử, đừng sửa
const livingRoom = new Thermostat("Living Room", 20);
livingRoom.increaseTemp();
livingRoom.increaseTemp();
console.log(livingRoom.currentTemp); // Đầu ra phải là 22
livingRoom.decreaseTemp();
console.log(livingRoom.currentTemp); // Đầu ra phải là 21
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Lập trình hướng đối tượng
1Đối tượng và từ khóa this
Ôn nhanh: đối tượngThêm phương thức vào đối tượngTìm hiểu từ khóa thisHàm khởi tạoTừ khóa newThử thách ôn tập7Kế thừa và từ khóa extends
Kế thừaQuan hệ "là một"Từ khóa extendsPhương thức super()Kế thừa thuộc tính và phương thứcThử thách ôn tập13Kết hợp hay kế thừa
Quan hệ “có một” và “là một”Những hạn chế của kế thừa nhiều tầngXây dựng đối tượng5Đóng gói và quyền truy cập
Đóng góiTrường công khai và trường riêng tưPhương thức riêng tưThử thách ôn tập8Tổ chức code OOP
Tổ chức các lớp thành module11Dự án: Trình hiển thị hình dạng
Thiết lập: lớp Hình dạng và xuấtKế thừa lớp Hình trònGhi đè và phương thức diện tíchBộ đếm hình dạng tĩnh6Dự án: Tài khoản ngân hàng đơn giản
Lớp BankAccountGửi tiền và rút tiềnSố dư dưới dạng thuộc tính riêng tư9Phương thức và thuộc tính tĩnh
Cấp lớp và cấp instanceThuộc tính tĩnhPhương thức tiện ích tĩnhThử thách ôn tậpTự luyện tập: Trình biên dịch JavaScript online