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:
class User {
constructor(name) {
this._name = name;
}
show() {
return this._name;
}
}
Buat objek dari kelas:
let user = new User('john', 'smit');
Panggil metode yang menampilkan nilai properti kita:
console.log(user.show());
Upaya untuk mengakses properti dari luar kelas tidak akan menyebabkan error:
console.log(user._name); // tidak ada error
Dalam kode berikut, buatlah properti menjadi privat:
class Employee {
constructor(name, salary) {
this._name = name;
this._salary = salary;
}
getName() {
return this._name;
}
getSalary() {
return this._salary;
}
}
Dalam kode berikut, buatlah metode pembantu menjadi privat:
class Employee {
constructor(name, salary) {
this.name = name;
this.salary = salary;
}
getSalary() {
return this._addSign(this.salary);
}
_addSign(num) {
return num + '
;
}
}