Mesmo fazendo das duas formas propostas pelo exercício ele retorna undefined
<script>
class Pessoa {
constructor(nome) {
this._nome = nome;
}
get nome() {
return this._nome;
}
set nome(nome) {
this._nome = nome;
}
grita(frase) {
`${this._nome} grita ${frase}`;
}
}
let pessoa = new Proxy(new Pessoa('Barney'), {
get(target, prop, receiver) {
if(prop == 'grita' && typeof(target[prop]) == typeof(Function)) {
return function() {
console.log(`Interceptei o método: ${prop}, por isso estou exibindo esta mensagem!`);
let retorno = Reflect.apply(target[prop], target, arguments);
console.log(`O valor retornado do método foi ${retorno}`);
return retorno;
}
return Reflect.get(target, prop, receiver);
}
}
});
console.log(pessoa.grita('Olá'));
</script>