Privaatheid in ou styl in OOP in JavaScript

Verklaring van private eienskappe en metodes deur die simbool # het heeltemal onlangs in JavaScript verskyn. Voor dit moes ons 'n spesiale, slim truuk gebruik.

Die kern van hierdie truuk is dat daar 'n ooreenkoms aangegaan word dat die name van private eienskappe en metodes met die onderstreep-simbool moet begin. In werklikheid sal sulke name nie privaat wees nie, maar ons kom ooreen dat ons hulle nie van buite die klas sal gebruik nie.

Kom ons probeer. Laat ons 'n private eienskap in hierdie styl maak:

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

Laat ons 'n objek van die klas skep:

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

Laat ons die metode roep wat die waarde van ons eienskap uitstuur:

javascriptconsole.log(user.show());

'n Poging om van buite die klas na die eienskap te verwys sal nie 'n fout veroorsaak nie:

javascriptconsole.log(user._name); // geen fout nie
Задание 1

Maak die eienskappe in die volgende kode privaat:

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

Maak die hulpmethode in die volgende kode privaat:

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