Eu entendi que é preciso ao invés de passar a referência do objeto "hoje" para o atributo da classe "data", criamos um novo objeto usando o método getTime() do objeto "hoje". O que não ficou claro para mim é se getTime() é um método que faz referência ao objeto "hoje" porque na hora que eu modificar o setTime() o getTime() não muda também dentro da classe Negociacao?
class Negociacao {
constructor(data,quantidade,valor){
this.data = new Date(data.getTime());
this.quantidade = quantidade;
this.valor = 0;
Object.freeze(this); //Congelando a instância da classe
}
get volume(){
return this._quantidade * this._valor;
}
get data(){
return new Date(this._data.getTime());
}
}
var hoje = new Date();
var negociacao = new Negociacao(hoje, 1, 2);
console.log(negociacao.data);
hoje.setDate(11);
hoje.getTime();
console.log(negociacao.data);