Quyền riêng tư theo phong cách cũ trong OOP JavaScript
Việc khai báo các thuộc tính và phương thức riêng tư
thông qua ký tự # mới xuất hiện trong JavaScript
gần đây. Trước đó, người ta phải
sử dụng một kỹ thuật đặc biệt.
Bản chất của kỹ thuật này là thỏa thuận rằng tên của các thuộc tính và phương thức riêng tư phải bắt đầu bằng ký tự gạch dưới. Trên thực tế, những tên như vậy sẽ không thực sự riêng tư, nhưng chúng ta thỏa thuận rằng sẽ không sử dụng chúng từ bên ngoài lớp.
Hãy thử làm. Tạo một thuộc tính riêng tư theo phong cách này:
class User {
constructor(name) {
this._name = name;
}
show() {
return this._name;
}
}
Tạo một đối tượng của lớp:
let user = new User('john', 'smit');
Gọi phương thức hiển thị giá trị thuộc tính của chúng ta:
console.log(user.show());
Việc cố gắng truy cập thuộc tính từ bên ngoài lớp sẽ không gây ra lỗi:
console.log(user._name); // không có lỗi
Trong đoạn mã sau, hãy làm cho các thuộc tính trở thành riêng tư:
class Employee {
constructor(name, salary) {
this.name = name;
this.salary = salary;
}
getName() {
return this.name;
}
getSalary() {
return this.salary;
}
}
Trong đoạn mã sau, hãy làm cho phương thức trợ giúp trở thành riêng tư:
class Employee {
constructor(name, salary) {
this.name = name;
this.salary = salary;
}
getSalary() {
return this.addSign(this.salary);
}
addSign(num) {
return num + '$';
}
}