Menu
CoddyTech

Trường công khai và trường 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 18 trên 56.

Trong các lớp JavaScript, chúng ta có thể định nghĩa hai loại trường: công khai và riêng tư.

Các trường công khai có thể được truy cập từ bên ngoài lớp và bất kỳ ai cũng có thể sử dụng.

Tạo một lớp có các trường công khai:

class Student {
  name = '';
  grade = 0;
  
  constructor(name, grade) {
    this.name = name;
    this.grade = grade;
  }
}

Tạo một đối tượng student:

const student = new Student('Alice', 95);

Truy cập các trường công khai từ bên ngoài lớp:

console.log(student.name); // Đầu ra: "Alice"
student.grade = 98;
console.log(student.grade); // Đầu ra: 98

Thuộc tính riêng tư được ký hiệu bằng biểu tượng # và chỉ có thể được truy cập từ bên trong lớp:

class Student {
  name = '';
  #grade = 0;
  
  constructor(name, grade) {
    this.name = name;
    this.#grade = grade;
  }
  
  getGrade() {
    return this.#grade;
  }
  
  updateGrade(newGrade) {
    this.#grade = newGrade;
  }
}

Sử dụng các trường riêng tư:

const student = new Student('Bob', 87);
console.log(student.name); // Đầu ra: "Bob"

// Truy cập trường riêng tư bằng phương thức (method)
console.log(student.getGrade()); // Đầu ra: 87

// Cập nhật trường riêng tư bằng phương thức
student.updateGrade(92);
console.log(student.getGrade()); // Đầu ra: 92

// Dòng này sẽ gây lỗi:
// console.log(student.#grade); // SyntaxError
challenge icon

Thử thách

  1. Thêm hai thuộc tính vào lớp có tên UserAccount:
    1. Một thuộc tính công khai username
    2. Một thuộc tính riêng tư #password
  2. Thêm hàm khởi tạo nhận các tham số username và password

Tự làm thử

import { UserAccount } from './userAccount.js';

// Code kiểm thử, đừng sửa
const user = new UserAccount("alice", "secret123");
console.log(user.username);          // Đầu ra phải là "alice"

quiz iconTự kiểm tra

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

Tự luyện tập: Trình biên dịch JavaScript online