Privasi dalam Gaya Lama dalam OOP dalam JavaScript

Pengisytiharan sifat dan kaedah peribadi melalui simbol # muncul dalam JavaScript baru-baru ini. Sebelum itu, terpaksa menggunakan teknik khas yang rumit.

Intipati teknik ini adalah dengan membuat perjanjian bahawa nama sifat peribadi dan kaedah mesti bermula dengan simbol garis bawah. Secara realiti, nama sedemikian tidak akan menjadi peribadi, tapi kita bersetuju bahawa kita tidak akan menggunakannya dari luar kelas.

Mari kita cuba. Buat sifat peribadi dalam gaya ini:

javascriptclass User {
  constructor(name) {
    this._name = name;
  }
  
  show() {
    return this._name;
  }
}

Buat objek kelas:

javascriptlet user = new User('john', 'smit');

Panggil kaedah yang memaparkan nilai sifat kita:

javascriptconsole.log(user.show());

Cubaan untuk mengakses sifat dari luar kelas tidak akan menyebabkan ralat:

javascriptconsole.log(user._name); // tiada ralat
Задание 1

Dalam kod berikut, jadikan sifat sebagai peribadi:

javascriptclass Employee {
  constructor(name, salary) {
    this.name = name;
    this.salary = salary;
  }
  
  getName() {
    return this.name;
  }
  getSalary() {
    return this.salary;
  }
}
Задание 2

Dalam kod berikut, jadikan kaedah pembantu sebagai peribadi:

javascriptclass Employee {
  constructor(name, salary) {
    this.name = name;
    this.salary = salary;
  }
  
  getSalary() {
    return this.addSign(this.salary);
  }
  
  addSign(num) {
    return num + '
;
  }
}