Privacidade no estilo antigo em OOP em JavaScript
A declaração de propriedades e métodos privados
através do símbolo # apareceu no JavaScript
há muito pouco tempo. Antes disso, tínhamos que
usar um truque especial e engenhoso.
A essência desse truque é estabelecer uma convenção de que os nomes de propriedades e métodos privados devem começar com o caractere sublinhado. Na realidade, esses nomes não serão privados, mas nós combinamos que não os usaremos de fora da classe.
Vamos tentar. Vamos fazer uma propriedade privada nesse estilo:
class User {
constructor(name) {
this._name = name;
}
show() {
return this._name;
}
}
Vamos criar um objeto da classe:
let user = new User('john', 'smit');
Vamos chamar o método que exibe o valor da nossa propriedade:
console.log(user.show());
A tentativa de acessar a propriedade de fora da classe não resultará em erro:
console.log(user._name); // nenhum erro
No código a seguir, torne as propriedades privadas:
class Employee {
constructor(name, salary) {
this._name = name;
this._salary = salary;
}
getName() {
return this._name;
}
getSalary() {
return this._salary;
}
}
No código a seguir, torne o método auxiliar privado:
class Employee {
constructor(name, salary) {
this.name = name;
this.salary = salary;
}
getSalary() {
return this._addSign(this.salary);
}
_addSign(num) {
return num + '
;
}
}