Segue meu script com comentários.
class Negociacao{
constructor(data,quantidade,valor){
//Recebe a data. ( Utilizamos a criação de um novo objeto para extrair um valor do objeto Date, da qual possamos aplicar o "freeze" garantido assim uma informação imuntável.)
this._data = new Date(data.getTime());
//Recebe a quantidade ( Utilizamos o "_" para deixar a informação imutável)
this._quantidade = quantidade;
//Recebe o valor ( Utilizamos o "_" para deixar a informação imutável)
this._valor = valor;
// Utilizamos esse metodo para "congelar" as informações obtidas, tornando-os imutáveis.
Object.freeze(this);
}
// Iremos utilizar o metodo GET para deixar os dados como somente leitura.
//Função para calcular o volume
get volume(){
//Extrai os elementos (Quantidade e valor) do objeto e calcula o volume
return this._quantidade * this._valor;
}
// Utilizando o metodo GET ( Metodo acessador) para tornar visivel(externamente) o codigo que recebeu ( _ - só poderão ser acessadas pelos próprios métodos da classe) como forma de segurança e/ou regra de negócio.)
get data(){
return new Date (this._data.getTime());
}
get quantidade(){
return this._quantidade;
}
get valor(){
return this._valor;
}
}