JavaScript-da ESKI USLUBDA OOP-da Privatlik

Privat xususiyatlar va metodlarni # belgisi orqali e'lon qilish JavaScript-ga yaqinda paydo bo‘ldi. Undan oldin maxsus aqlli usuldan foydalanishga majbur bo‘lar edik.

Ushbu usulning mazmuni shundaki, privat xususiyatlar va metodlar nomlari pastki chiziq belgisidan boshlanishi kerakligi haqida kelishib olinadi. Asilda bunday nomlar privat bo‘lmaydi, lekin biz ularni klass tashqarisidan ishlatmaslikka kelishamiz.

Keling, sinab ko‘raylik. Keling, ushbu uslubda privat xususiyat yarataylik:

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

Klasning ob'ektini yaratamiz:

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

Xususiyatimizning qiymatini chiqaradigan metodni chaqiramiz:

javascriptconsole.log(user.show());

Xususiyatga klass tashqarisidan murojaat qilishga urinish xatolikka olib kelmaydi:

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

Quyidagi kodda xususiyatlarni privat qiling:

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

Quyidagi kodda yordamchi metodni privat qiling:

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