Privatësia në stilin e vjetër në OOP në JavaScript

Deklarimi i vetive dhe metodave private përmes simbolit # u shfaq në JavaScript shumë kohë më parë. Para kësaj duhej të përdorej një teknikë e veçantë e ndërlikuar.

Thelbi i kësaj tekike është se lidhet marrëveshja që emrat e vetive private dhe metodave duhet të fillojnë me simbolin e nënvizimit. Realësisht emra të tillë nuk do të jenë privat, por ne biem marrëveshje që të mos i përdorim ato nga jashtë klasës.

Le të provojmë. Le të bëjmë një veti private në këtë stil:

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

Le të krijojmë një objekt të klasës:

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

Le të thërrasim metodën, që shfaq vlerën e vetisë sonë:

javascriptconsole.log(user.show());

Përpjekja për t'iu drejtuar vetisë nga jashtë klasës nuk do të rezultojë në gabim:

javascriptconsole.log(user._name); // nuk ka gabim
Задание 1

Në kodin vijues bëni vetitë private:

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

Në kodin vijues bëni metodën ndihmëse private:

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