JavaScript-ում OOP-ի հին ոճով առանձնացվածություն

Առանձնացված հատկությունների և մեթոդների հայտարարումը # նշանի միջոցով հայտնվել է 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 + '
;
  }
}