Prezados,
Temos em "Criando nosso ListModel" (aula 5, módulo 4 curso JavaScript: Conhecendo o Browser e padrões de projeto) a descrição de como criar a tal ListModel queserá uma array protegida contra alterações.
Temos: class ListaNegociacoes {
constructor() {
this._negociacoes = [] //contruindo um MODELO para armazenar as negociações
}
adiciona(negociacao) { //método para adicionar a negociação
this._negociacoes.push(negociacao); //push add elemento na array
}
get negociacoes() {
return this._negociacoes;
}
}
e temos:
class NegociacaoController {
constructor() {
let $ = document.querySelector.bind(document);
this._inputData = $('#data');
this._inputQuantidade = $('#quantidade');
this._inputValor = $('#valor');
this._listaNegociacoes = new ListaNegociacoes(); //=====>>>>A DÚVIDA ESTÁ AQUI
}
adiciona(event) {
event.preventDefault();
let negociacao = new Negociacao( //
DateHelper.textoParaData(this._inputData.value),
this._inputQuantidade.value,
this._inputValor.value
);
this._listaNegociacoes.adiciona(negociacao);
Pelo contexto e testes, a cada evento "adiciona" sava na array negociacoes um novo objeto com os dados capturados da tela. Porém, não entedi como isso está funcionando, sendo que o new ListaNegociacoes() é chamado juntamente com o "adiciona". O new ListaNegociacoes() não deveria criar uma nova array negociacoes sobrescrevendo a anterior?