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:
class User {
constructor(name) {
this._name = name;
}
show() {
return this._name;
}
}
Buat objek kelas:
let user = new User('john', 'smit');
Panggil kaedah yang memaparkan nilai sifat kita:
console.log(user.show());
Cubaan untuk mengakses sifat dari luar kelas tidak akan menyebabkan ralat:
console.log(user._name); // tiada ralat
Dalam kod berikut, jadikan sifat sebagai peribadi:
class Employee {
constructor(name, salary) {
this.name = name;
this.salary = salary;
}
getName() {
return this.name;
}
getSalary() {
return this.salary;
}
}
Dalam kod berikut, jadikan kaedah pembantu sebagai peribadi:
class Employee {
constructor(name, salary) {
this.name = name;
this.salary = salary;
}
getSalary() {
return this.addSign(this.salary);
}
addSign(num) {
return num + '
;
}
}