Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Trocando function por arrow function

No segundo video da primeira aula o Flavio tenta passar this para negociaçõesView acontece o seguinte erro

Uncaught TypeError: Cannot read property 'update' of undefined

eu troquei a seguinte declaração

this._listaNegociacoes = new ListaNegociacoes(function (model) {
    this._negociacoesView.update(model)
});

por arrow function ficando

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

e funcionou perfeitamente! pq funcionou?

1 resposta
solução!

Fala ai Andre, tudo bem? Vamos lá:

e funcionou perfeitamente! pq funcionou?

O problema foi resolvido por conta da natureza de contexto de cada tipo de função.

Irei tentar explicar de uma maneira simplista e direto:

Funções padrões em JavaScript, ou seja, funções de expressão (expressions functions) e declaração (declarations functions), possuem o escopo relacionado por quem chamou a função, ou seja, onde elas foram invocadas será o this da função.

Já funções de flecha (arrow functions), possuem o escopo relacionado ao local onde foram criadas, independe de onde e quem as executá-las, o contexto será baseado no local onde elas foram definidas e criadas.

Claro que por debaixo dos panos acontece muito mais do que isso e envolve coisas mais técnicas e complexas.

Espero ter ajudado.