Махфияти қадима дар ООП дар JavaScript
Эълон кардани хусусиятҳо ва усулҳои махфӣ
аз тариқи аломати # дар JavaScript
ахмист пайдо шудааст. Пеш аз ин бояд
аз усули махсуси зирак
истифода мекарданд.
Махз ин усул дар он аст, ки созишномае баста мешавад, ки номҳои хусусиятҳои махфӣ ва усулҳо бояд бо аломати зерҳат сар шаванд. Дар воқеъ чунин номҳо махфӣ нахоҳанд буд, аммо мо созиш мекунем, ки онҳоро аз беруни синф истифода намебарем.
Биёед кӯшиш кунем. Биёед хусусияти махфиро дар чунин услуб созем:
class User {
constructor(name) {
this._name = name;
}
show() {
return this._name;
}
}
Объекти синфро созем:
let user = new User('john', 'smit');
Усулро даъват кунем, ки қимати хусусияти моро баро мекунад:
console.log(user.show());
Кӯшиши муроҷиат ба хусусият аз беруни синф ба хатто намеорад:
console.log(user._name); // хатто нест
Дар рамзи зерин хусусиятҳоро махфӣ кунед:
class Employee {
constructor(name, salary) {
this.name = name;
this.salary = salary;
}
getName() {
return this.name;
}
getSalary() {
return this.salary;
}
}
Дар рамзи зерин усули ёридиҳандаро махфӣ кунед:
class Employee {
constructor(name, salary) {
this.name = name;
this.salary = salary;
}
getSalary() {
return this.addSign(this.salary);
}
addSign(num) {
return num + '₽';
}
}