Đóng gó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 17 trên 56.
Tính đóng gói là quá trình kết hợp dữ liệu bên trong một lớp thành một đơn vị.
Điều này giúp hạn chế việc truy cập trực tiếp vào dữ liệu của lớp, từ đó giúp ngăn dữ liệu bị thay đổi ngoài ý muốn.
Hãy xem tính đóng gói hoạt động qua một ví dụ đơn giản. Tạo một đối tượng cơ bản với các thuộc tính công khai:
const user = {
name: "John",
email: "john@example.com"
};Bất kỳ ai cũng có thể trực tiếp truy cập và sửa đổi các thuộc tính này:
user.name = "Jane"; // Dễ sửa đổi từ bên ngoài
console.log(user.email); // Dễ truy cập từ bên ngoàiMột cách tiếp cận đóng gói tốt hơn dùng các bao đóng để ẩn dữ liệu:
function createUser(name, email) {
// Các biến (variable) này là riêng tư (được đóng gói)
let userName = name;
let userEmail = email;
// Trả về một đối tượng (object) có các phương thức (method) để tương tác với dữ liệu riêng tư
return {
getName: function() {
return userName;
},
getEmail: function() {
return userEmail;
},
setName: function(newName) {
userName = newName;
}
};
}
const encapsulatedUser = createUser("John", "john@example.com");Bây giờ, để tương tác với dữ liệu:
console.log(encapsulatedUser.getName()); // "John"
encapsulatedUser.setName("Jane");
console.log(encapsulatedUser.getName()); // "Jane"
// Không thể truy cập trực tiếp vào dữ liệu
console.log(encapsulatedUser.userName); // undefinedThử thách
Bạn được cung cấp đoạn code sử dụng tính đóng gói để bảo vệ dữ liệu người dùng. Nhiệm vụ của bạn là thêm phương thức getAge() để truy cập tuổi.
Các bài kiểm tra sẽ kiểm tra:
- Có phương thức
getAge() - Phương thức trả về đúng tuổi
- Thông tin về tuổi vẫn ở chế độ riêng tư
Đầu ra dự kiến:
john_doe
25
Tự làm thử
import { createUser } from './createUser.js';
// Code kiểm tra, đừng chỉnh sửa
const user = createUser("john_doe", 25);
console.log(user.getUsername()); // Phải in ra "john_doe"
console.log(user.getAge()); // Phải in ra 25
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