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

Duvida sobre o arguments aula 2-video 9

minha duvida e sobre o seguinte codigo:

this._listaNegociacao=new Proxy(new ListaNegociacoes(),{
      get:function (target,prop,receiver) {

          if(['adiciona','esvazia'].includes(prop) && typeof(target[prop])=="function"){
            return function(){
              Reflect.apply(target[prop],target,arguments)
              self._negociacaoView.update(target)
             }

        }
        return Reflect.get(target,prop,receiver)
      }

    })


this._listaNegociacao.adiciona(this._criaNegociacao());

como o arguments pode ser this._criaNegociacao() se estamos dentro da proxy,os argumentos não seriam no caso os argumentos da minha proxy ja que estamos no bloco dela?

2 respostas
solução!

Bom dia!

O trecho

 return function(){
              Reflect.apply(target[prop],target,arguments)
              self._negociacaoView.update(target)
             }

Substitui o método original no objeto, um workaround para conseguir a funcionalidade que esperamos. Sendo assim, o arguments tem como contexto o método chamado no objeto original, por isso consegue ter acesso a todos os seus parâmetros.

Tipo, nesse trecho, fugimos um pouco do conceito do Proxy que é preservar o objeto original, mas é necessário para conseguirmos interceptar chamadas de métodos.

Obrigado professor Flavio, mais uma vez me trouxe mais clareza sobre o Js