Nesse trecho de código é onde eu crio meu proxy.
static create(objeto, props, acao) {
return new Proxy(objeto, {
get(target, prop, receiver) {
if(props.includes(prop) && ProxyFactory._isFunction(target[prop])) {
return function() {
console.log(`a propriedade "${prop}" foi interceptada`);
Reflect.apply(target[prop], target, arguments);
return acao(target);
}
}
return Reflect.get(target, prop, receiver);
},
set(target, prop, value, receiver) {
//Verifico se essa propriedade contem nas propriedades passadas na criação do proxy
if(props.includes(prop)) {
//Aqui preciso alterar o valor da propriedade mensagem
target[prop] = value;
acao(target);
}
return Reflect.set(target, prop, value, receiver);
}
});
}
Eu digo quando eu instancio a minha classe Bind eu preciso passar as minhas props que são as minhas funções, por exemplo.
this._mensagem = new Bind(new Mensagem(), new MensagemView($('#mensagemView')), 'texto');
Texto nesse caso e uma função minha, eu digo, passar inumeras funções do meu modelo como parâmetro, se não tem uma forma melhor de eu passa-las.