პრივატულობა ძველ სტილში OOP-ში 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 + '₾';
}
}