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

Usar n1._data.setDate() ainda possibilita mudar a data

Mesmo criando uma nova data dentro do constructor ainda é possível alterar a data referenciando _data. Por mais que seja defensiva ainda há brechas. Tem algum modo de deixar mais seguro?

    let n1 = new Negociacao(new Date(), 5, 700.5);
        console.log(n1.data);
        n1._data.setDate(11);
        console.log(n1.data);

Constructor da classe

constructor(data, quantidade, valor) {

        this._data = new Date(data.getTime());
        this._quantidade = quantidade;
        this._valor = valor;

        Object.freeze(this);
    }
1 resposta
solução!

Boa tarde, Hugo! Como vai?

O JS não tem encapsulamento, então não tem como deixar mais seguro. O mestre Flávio inclusive fala sobre isso durante uma das aulas do curso, mostrando que implementada a programação defensiva deve-se esperar que o programador siga as convenções e não acesse diretamente atributos iniciados com _ ( underline ).

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!