Pessoal, fiz a solução abaixo encarando como um desafio antes de avançar nas aulas e cheguei no seguinte resultado:
this._negotiationList = new Proxy(new NegotiationList(), {
get: function(target,prop, receiver) {
if(["add", "releaseNegotiations"].includes(prop)) {
console.log("Intercepted by proxy... Get: ", prop)
return function(handleUpdateModel, negotiation = undefined) {
negotiation ? target[prop](negotiation) : target[prop]() ;
handleUpdateModel(target);
};
}
return target[prop];
}
});
Método Add do NegociacaoController:
add(event) {
event.preventDefault();
const negotiation = this._createNegotiation();
this._negotiationList.add**((negotiationList) => this._negotiationsView.update(negotiationList), negotiation);**
this._negotiationsMessage.text = "Negociação inserida com sucesso";
this._negotiationMessageView.update(this._negotiationsMessage.text);
this._resetForm();
}
Observa que enviei um arrow function invocando a minha função que é responsável por atualizar o modelo. E não usei o Reflect como na solução.
A forma que resolvi é "aceitável" do ponto de vista de boas práticas e tal? Ou de fato é "necessário" o uso da Reflect?
abs!