JavaScript-da ESKI USLUBDA OOP-da Privatlik
Privat xususiyatlar va metodlarni
# belgisi orqali e'lon qilish JavaScript-ga
yaqinda paydo bo‘ldi. Undan oldin maxsus
aqlli usuldan foydalanishga majbur bo‘lar edik.
Ushbu usulning mazmuni shundaki, privat xususiyatlar va metodlar nomlari pastki chiziq belgisidan boshlanishi kerakligi haqida kelishib olinadi. Asilda bunday nomlar privat bo‘lmaydi, lekin biz ularni klass tashqarisidan ishlatmaslikka kelishamiz.
Keling, sinab ko‘raylik. Keling, ushbu uslubda privat xususiyat yarataylik:
class User {
constructor(name) {
this._name = name;
}
show() {
return this._name;
}
}
Klasning ob'ektini yaratamiz:
let user = new User('john', 'smit');
Xususiyatimizning qiymatini chiqaradigan metodni chaqiramiz:
console.log(user.show());
Xususiyatga klass tashqarisidan murojaat qilishga urinish xatolikka olib kelmaydi:
console.log(user._name); // xatolik yo'q
Quyidagi kodda xususiyatlarni privat qiling:
class Employee {
constructor(name, salary) {
this._name = name;
this._salary = salary;
}
getName() {
return this._name;
}
getSalary() {
return this._salary;
}
}
Quyidagi kodda yordamchi metodni privat qiling:
class Employee {
constructor(name, salary) {
this.name = name;
this.salary = salary;
}
getSalary() {
return this._addSign(this.salary);
}
_addSign(num) {
return num + '
;
}
}