No lugar de target eu não poderia usar o receiver, pois depois de incluido no proxy ele refenrencia para o objeto original?
Realizei ums testes e todo valor que atribuo somente ao proxy é atribuido tbm ao objeto original que esta atrás da camada proxy. Isso é verdadeiro ou somente alguma coisa do código que estamos escrevendo.
let handler = {
get: function (target, prop, receiver) {
if(['adiciona', 'esvazia'].includes(prop) && typeof(target[prop]).toString() == typeof(Function).toString()){
return function(){
console.log(`interseptando ${prop}`)
Reflect.apply(target[prop], target, arguments)
}
}
return Reflect.get(target,prop,receiver);
}
}