Olá!
Durante a aula, criamos uma classe para que fosse o mais imutável possível:
class Negociacao{
constructor(data, quantidade, valor){
this._data = new Date(data.getTime());
this._quantidade = quantidade;
this._valor = valor;
Object.freeze(this);
}
get volume() {
return this._quantidade * this._valor;
}
get data() {
return new Date(this._data.getTime());
}
get quantidade() {
return this._quantidade;
}
get valor() {
return this._valor;
}
}
Dessa forma quanto a propriedade "data" de uma instância, não podemos altera-la pelo método:
let n1 = new Negociacao(new Date(), 1, 1);
n1.data.setDate(n1.data.getDate() + 1);
E nem alterando a instância utilizada no construtor:
let novaData = new Date();
let n1 = new Negociacao(novaData, 1, 1);
novaData.setDate(n1.data.getDate() + 1);
Porém ainda existe o risco de altera-lá através da propriedade em si, ainda que sendo contra a convenção:
let n1 = new Negociacao(new Date(), 2, 2);
n1._data.setDate(n1.data.getDate() + 1);
Será que existe alguma maneira de contornar isso também?