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);
}
});