Privasi dalam Gaya Lama di OOP JavaScript

Deklarasi properti dan metode privat melalui simbol # muncul di JavaScript baru-baru ini. Sebelumnya, harus menggunakan trik khusus yang rumit.

Inti dari trik ini adalah membuat kesepakatan bahwa nama properti dan metode privat harus dimulai dengan simbol underscore. Secara nyata nama-nama seperti ini tidak akan privat, tapi kita sepakat bahwa kita tidak akan menggunakannya dari luar kelas.

Mari kita coba. Buatlah properti privat dengan gaya seperti ini:

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

Buat objek dari kelas:

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

Panggil metode yang menampilkan nilai properti kita:

javascriptconsole.log(user.show());

Upaya untuk mengakses properti dari luar kelas tidak akan menyebabkan error:

javascriptconsole.log(user._name); // tidak ada error
Задание 1

Dalam kode berikut, buatlah properti menjadi privat:

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

Dalam kode berikut, buatlah metode pembantu menjadi privat:

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