Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Qual a necessidade de criar uma nova instância no método get?

Olá pessoal! Tudo bem?

No constructor tenho a propriedade this._data = new Date(data.getTime()), a propriedade já é uma instância do objeto Date(). E no get data() o retorno também é uma instância de um objeto.

No get data(), se eu retornar apenas this._data, consigo alterar através do setDate(), minha dúvida é porque isso é possível, já que estou retornando um objeto ja instanciado no constructor?

Peço desculpas se não consegui ser claro.

Segue o código completo:

class Negociacao {
    constructor(data, quantidade, valor) {
        this._data = new Date(data.getTime());  // criando uma nova instância a partir do tempo de uma data 
        this._quantidade = quantidade;
        this._valor = valor;
        Object.freeze(this);
    }

    get volume() {
        return this._quantidade * this._valor;
    }

    get data() {
        return new Date(this._data.getTime());
        // return this._data;
    }

    get quantidade() {
        return this._quantidade;
    }

    get valor() {
        return this._valor;
    }
}
3 respostas
solução!

Fala ai Helderson, tudo bem? Quando tu altera direto pelo _data você está alterando a referência do objeto criada durante o construtor, já quando faz o get e retorna um novo objeto sempre, é justamente para que seja criado um novo objeto com uma nova referência, dessa forma qualquer alteração com setDate irá refletir nesse objeto novo.

Espero ter ajudado.

Opa Matheus, Tudo bem! E contigo?

Consegui entender certinho. Que loucura hahaha!

Muito obrigado!

Estou bem também.

Magina Helderson, sempre que precisar não deixe de criar suas dúvidas.

Abraços e bons estudos.