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

Valores não foram alterados de fato

ao fazer o que foi mostrado em video quando dou console log no valor o mesmo se mantem igual a antes da atribuição.

inclusive mesmo se espero um tempo e pergunto novamente, o valor apos a atribuição se mantem o mesmo de antes da atribuição como mostrado abaixo

    <script>
        let negociacao = new Proxy(new Negociacao(new Date(), 1, 100), {
            set(target, prop, value, receiver) {
                console.log(`valor antigo "${target[prop]}", novo valor : "${value}"`);
                return Reflect.set(target, prop, value, receiver);
            }
        });

        negociacao._quantidade = 10;
        negociacao._valor = 200;

        console.log(`valor atual quantidade : ${negociacao.quantidade}`);
        console.log(`valor atual valor : ${negociacao.valor}`);

        setTimeout(() => {
            console.log(`valor atual quantidade : ${negociacao.quantidade}`);
            console.log(`valor atual valor : ${negociacao.valor}`);
        }, 3000);
    </script>

meu console log é o seguinte

valor antigo "1", novo valor : "10" valor antigo "100", novo valor : "200" valor atual quantidade : 1 valor atual valor : 100 valor atual quantidade : 1 valor atual valor : 100

1 resposta
solução!

se alguém tiver a mesma duvida que eu tive essa é a resposta

Isso acontece devido a isso Object.freeze(this);

class Negociacao {

    constructor(data, quantidade, valor) {

        // Programação defensiva
        this._data = new Date(data.getTime());
        this._quantidade = quantidade;
        this._valor = valor;
        Object.freeze(this);
    }

    get volume() {

        return this._quantidade * this._valor;
    }

    get data() {
        // Programação defensiva
        return new Date(this._data.getTime());
     }

    get quantidade() {

        return this._quantidade;
    }

    get valor() {

        return this._valor;
    }
}