1
resposta

bind ou arrow

O foco da resolução é entender o contexto no qual a função está sendo executada, pois as soluções são diversas.

Pode ser solucionado com arrow function:

class Relogio {

    constructor() {
        this._segundos = 0;

        setInterval( () => {
            console.log(++this._segundos);
          }, 1000);
    }
}

var relogio = new Relogio();

Pode ser solucionado atrelando o contexto com o método bind:

class Relogio {

    constructor() {
        this._segundos = 0;

        setInterval(function () {
            console.log(++this._segundos);
          }.bind(this), 1000);
    }
}

var relogio = new Relogio();

Como disse anteriormente o segredo é entender o que está acontecendo com o contexto de execução.

1 resposta

Olá Ricardo, tudo bem com você?

Peço desculpas pela demora no retorno.

Fico feliz em ver sua contribuição para a comunidade do fórum Alura. Sua postagem será uma boa inspiração para os alunos e alunas. Não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.

Em caso de dúvidas estou à disposição.

Abraços e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software