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

Dúvida na implementação do Proxy no Controller quanto ao Target.

Na aula 2 - 9 do curso avançado de Js vi a implementação de uma proxy no nosso controller. Código abaixo. O que eu entendi por Proxy é: Ao criar uma proxy de um objeto (no caso um ListaNegociações) ao fazer uma operação de get eu tenho o target que seria o objeto a quem a proxy faz referencia (imagino a Lista), a propriedade (pode ser variaveis ou funções) e a proxy como receiver. Eu não entendi em que ponto do código o Target (que na minha cabeça era uma LISTA virou uma instancia de negociação).

class NegotiacaoController
{
    constructor()
    {
       let $ = document.querySelector.bind(document);
       this._inputQuantity = $("#quantidade");
       this._inputData = $("#data");
       this._inputValue = $("#valor");
       let self = this;

       this._listaNegotiations = new Proxy(new ListaNegociacoes(), 
       {
          get:(targetObj, property, receiverProxy) => 
         {
            if(["EraseAll", "Add"].includes(property) &&  typeof(targetObj[property]) == typeof(Function))
            {
               return function()
               {
                    console.log(`Interceptando ${property}`);
                    Reflect.apply(targetObj[property], targetObj, arguments);   
                    self._negotiacoesView._update(targetObj);
               }
            }
           return Reflect.get(targetObj, property, receiverProxy);
         }

       });
1 resposta
solução!

Boa noite, Murilo! Como vai?

Na realidade o targetObj continua sendo uma lista de negociações! Tanto é verdade que vc faz self._negotiacoesView._update(targetObj) e tudo continua funcionando! Mas, se vc reparar bem, o método update() de NegociacoesView sempre recebe uma instância de ListaNegociacoes! Provando assim, que targetObj realmente é uma lista de negociações!

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!