1
resposta

Atributos da Classe não tem escopo em um função anonima?

Estava fazendo os exercícios e comecei a inventar, tracei como objetivo colocar um tempo na apresentação da mensagem. Usando manipulação de css.

_apresentarMessagem() {

    this._element.classList.remove("messagem-invisivel");

    setTimeout(() => {


         this._element.classList.add("messagem-invisivel");


    }, 2500);


}

Fiz assim porém a primeira parte do codigo funciona mas o setTimeout não.

Obs:

1 - this._element referencia um atributo da classe mãe da classe;

2 - Quando colocado um console.log(this._element) dentro de setTimeout no atributo é tido como undefined e como se ele perdesse a referencia do atributo;

3- Atribuir this._element a uma variavel com declaração var e executar os comando nesta o código funciona perfeitamente;

_apresentarMessagem() { 

    var a = this._element;

     a.classList.remove("messagem-invisivel");

    setTimeout(() => {

        a.classList.add("messagem-invisivel");

    }, 2500);

}

Queria saber o motivo desse fato.

1 resposta

Porque o this faz referência ao escopo da função timeout,