get: function (target, prop, receiver) {
//if (["adiciona", "esvazia"].includes(prop) && target[prop] instanceof
if (["adiciona"].includes(prop) && target[prop] instanceof Function) {
return function(){
console.log(`Interceptando prop: ${prop}`);
return Reflect.apply(target[prop], target, arguments);
};
}
return Reflect.get(target, prop, receiver);
}
Um function, quando invocada, é feito o get e depois o apply, de acordo com o Flávio.
A dúvida ficou no seguinte:
Porque fazemos o retorno fora do if com o: return Reflect.get(target, prop, receiver);
No entanto, dentro do if fazemos: return Reflect.apply(target[prop], target, arguments);
Compreendo que o apply vai realizar a invocação do método, porém, quando temos um método que não esta na condição do if, ele vai retornar com o "Reflect.get" e funciona. Por que não funciona se dermos um "Reflect.get" ao invés do "Reflect.apply" dentro do if ? Por exemplo, se eu não adicionar o "esvazia" na lista de métodos do if, ainda assim ele será executado, mesmo que não de o update no template (mesmo retornando via Reflect.get). Fico grato!