1
resposta

Dúvida programação defensiva

Testei utilizando o código da seguinte forma:

get data() {
    const copiaDaData = this._data
    return copiaDaData;
  }

E ainda retorna o valor que utilizamos no controle, no caso 15

submeterFormulario(): void {
    const negociacao = this.criaNegociacao();
    negociacao.data.setDate(15)
    this.negociacoes.adiciona(negociacao);
    console.log(this.negociacoes.mostraLista());
    this.limparFormulario();
  }

Por que o código dessa maneira não funciona? E por que devo utilizar o new Date nesse caso?

const copiaDaData = new Date(this._data.getTime())
1 resposta

Fala João, dessa forma vc não consegue mudar a referência da variável na memória. Quando vc realizar const copiaDaData = this.data, vc está apontando a referência de this.data para copiaData que no final das contas fica a mesma coisa. Ao realizar um new Date(), você está mudando completamente a referência, na vdd é uma nova referência na memória, pq vc está instanciando um novo objeto e passando o valor da data no Date.