JavaScript да ООП да эски usulda приватность

Хусусий properties ва methodларни # символы орқали declare qilish JavaScript да жуда якинда пайдо бўлди. Ундан олдин махсус қийин usulдан foydalanishга тўғри келган.

Бу usulнинг mohiyati шундаки, хусусий properties ва methodларнинг nomлари pastki chiziq символыдан boshlanishи kerak деган kelishuvga asoslanган. Asilda бундай nomлар хусусий бўлмайди, лекин биз class ташқарисидан улардан foydalanmaslikka kelishamiz.

Келиб, sinab кўрамиз. Бу usulда хусусий property яратамиз:

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

Classнинг objectини яратамиз:

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

Бизнинг propertyмизнинг қийматини chiqaradigan methodни chaqiramiz:

javascriptconsole.log(user.show());

Class ташқарисидан propertyга murojaat qilishga urinish xatolikka olиб келмайди:

javascriptconsole.log(user._name); // xatolik yoʻq
Задание 1

Quyidagi kodda propertiesларни хусусий qiling:

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

Quyidagi kodда yordamchi methodни хусусий qiling:

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