1
resposta

Declarações no construtor

Nosso construtor ficou assim

constructor() {

    let $ = document.querySelector.bind(document);

    this._inputData = $("#data")
    this._inputQuantidade = $("#quantidade");
    this._inputValor = $("#valor");
    this._listaNegociacoes = new ListaNegociacoes(model =>
        this._tabela.update(model));
    this._mensagem = new Mensagem();
    this._tabela = new NegociacoesView($("#tabela"));
    this._mensagemView = new MensagemView($("#mensagemView"));
}

Porém minha duvida é, a gente passa como parametro da construção do ListaNegociacoes o this._tabela mas a gente só instancia ele abaixo, não deveria dar erro assim que eu carrego a página? por eu chamo algo que ainda não está instanciado?

1 resposta

Boa tarde, Rodolpho! Como vai?

O erro não ocorre pq ao chegar nessa linha

this._listaNegociacoes = new ListaNegociacoes(model =>
        this._tabela.update(model));

O JS não irá executar a arrow function, apenas irá passar ela para o construtor da classe ListaNegociacoes.

Sendo assim, o fluxo segue, o objeto do tipo NegociacoesView é criado em seguida, de modo que quando a arrow function for executada, o objeto já existirá.

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos!