Não recebi a mensagem duplicada porque o trecho abaixo está diferente da resposta do exercício:
console.log(`Valor antigo de ${prop}:...
console.log(`Valor antigo ${target[prop]}...
Não ficou 100% claro porque com target[prop] duplica e com prop somente não.
O código que escrevi completo no exercício foi:
class Funcionario {
constructor(email) {
this._email = email;
}
get email() {
return this._email;
}
set email(email) {
this._email = email;
}
}
let funcionario = new Proxy(new Funcionario('rodrigo@123.com.br'),{
set (target,prop,value,receiver){
console.log(`Valor antigo de ${prop}: ${target[prop]}, novo valor de ${prop}: ${value}`);
}
});
funcionario.email = 'rodrigo@321.com.br';
O código postado como resposta foi
class Funcionario {
constructor(email) {
this._email = email;
}
get email() {
return this._email;
}
set email(email) {
this._email = email;
}
}
let funcionario= new Proxy(new Funcionario('abc@abc.com'), {
set(target, prop, value, receiver) {
console.log(prop); // imprimindo a propriedade que está sendo alterada
console.log(`Valor antigo ${target[prop]}, valor atual: ${value}`);
return Reflect.set(target, prop, value, receiver);
}
});
funcionario.email = 'aaa@aaa.com';