პრივატულობა ძველ სტილში OOP-ში JavaScript-ში

პრივატული თვისებების და მეთოდების დეკლარირება # სიმბოლოს მეშვეობით გამოჩნდა JavaScript-ში სულ ახლახანს. მანამდე მოგვიწევდა გამოგვეყენებინა სპეციალური ჭკვიანური მეთოდი.

ამ მეთოდის არსი ისაა, რომ დაემტკიცება შეთანხმება, რომ პრივატული თვისებების სახელები და მეთოდები უნდა იწყებოდეს ხაზგასმის სიმბოლოთი. რეალურად ასეთი სახელები არ იქნება პრივატული, მაგრამ ჩვენ ვთანხმდებით იმაზე, რომ არ გამოვიყენებთ მათ კლასის გარედან.

მოდით ვცადოთ. შევქმნათ პრივატული თვისება ამ სტილში:

javascriptclass User {
  constructor(name) {
    this._name = name;
  }
  
  show() {
    return this._name;
  }
}

შევქმნათ კლასის ობიექტი:

javascriptlet user = new User('john', 'smit');

გამოვიძახოთ მეთოდი, რომელიც გამოსახავს მნიშვნელობას ჩვენი თვისების:

javascriptconsole.log(user.show());

კლასის გარედან თვისებაზე მიმართვის მცდელობა არ გამოიწვევს შეცდომას:

javascriptconsole.log(user._name); // შეცდომა არ არის
Задание 1

შემდეგ კოდში გახადეთ თვისებები პრივატული:

javascriptclass Employee {
  constructor(name, salary) {
    this._name = name;
    this._salary = salary;
  }
  
  getName() {
    return this._name;
  }
  getSalary() {
    return this._salary;
  }
}
Задание 2

შემდეგ კოდში გახადეთ დამხმარე მეთოდი პრივატული:

javascriptclass Employee {
  constructor(name, salary) {
    this.name = name;
    this.salary = salary;
  }
  
  getSalary() {
    return this._addSign(this.salary);
  }
  
  _addSign(num) {
    return num + '₾';
  }
}