Oi, Lucas, tudo bem?
O método static são criados diretamente na classe e não são chamados dentro das instâncias da classe. Esse tipo de método é utilizado para funções utilitárias, um exemplo:
class StaticClassMethod{
static myName(){
return "Ana"
}
}
Acessando o método através da instância da classe StaticClassMethod
:
const staticmethod = new StaticClassMethod
console.log(staticmethod.myName())
Mas quando tentamos acessar o método através da instância, como no exemplo acima, é nos retornado um erro staticmethod.myName() is not a function
Para conseguirmos acessar um método estático, devemos passar pela classe, dessa forma:
console.log(StaticClassMethod.myName())// Ana
Já, caso queira chamar um método estático em outro método estático numa mesma classe, a palavra reservada this
é necessária, por exemplo:
static myFullName(){
return `${this.myName()} Santos`
}
console.log(StaticClassMethod.myFullName()) // Ana Santos
Nesse caso, o método estático não seria interessante. O instrutor propõe o uso do método especial constructor
pois com ele podemos inicializar a classe com argumentos, como na atividade:
constructor(texto) {
if(!this._valida(texto)) throw new Error(`O texto ${texto} não é um código válido`);
this._texto = texto;
}
Que de cara já nos dá um retorno se o código for inválido, não executando o método valida(texto)
.
E o get
tem o papel de permitir o acesso da propriedade quando acessada diretamente.
Se ficou alguma dúvida, é só falar!