Phương thức riêng tư
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 19 trên 56.
Phương thức riêng tư trong lớp JavaScript giúp bạn ẩn các chi tiết triển khai và ngăn truy cập từ bên ngoài vào chức năng nội bộ.
Từ ES2022, bạn có thể định nghĩa phương thức riêng tư bằng tiền tố #:
class Counter {
#count = 0;
// Tạo một phương thức (method) riêng tư
#increment() {
this.#count++;
}
// Phương thức công khai sử dụng phương thức riêng tư
addOne() {
this.#increment();
return this.#count;
}
}Hãy tạo một đối tượng Counter:
const myCounter = new Counter();Ta có thể gọi phương thức công khai:
console.log(myCounter.addOne()); // Đầu ra: 1Nhưng nếu thử truy cập trực tiếp vào phương thức riêng tư (private method), bạn sẽ gặp lỗi:
myCounter.#increment(); // Lỗi: Không thể truy cập phương thức riêng tư từ bên ngoài lớpPhương thức riêng tư giúp duy trì tính đóng gói bằng cách ẩn các chi tiết triển khai nội bộ khỏi thế giới bên ngoài.
Thử thách
Bạn được cung cấp một lớp MessageBox dùng để lưu tin nhắn. Nhiệm vụ của bạn là thêm một phương thức riêng có tên #isValidMessage(text) để xác thực tin nhắn. Phương thức này cần:
- Trả về
truenếu văn bản không rỗng và có ít hơn 100 ký tự - Trả về
falsetrong các trường hợp khác
Tự làm thử
import { MessageBox } from './messageBox.js';
// Sử dụng hộp thông báo
const box = new MessageBox();
console.log(box.setMessage("Hello")); // "Message set!" (sử dụng #isValidMessage)
console.log(box.setMessage("")); // "Invalid message!" (sử dụng #isValidMessage)
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