Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Duvida no código

tentei fazer assim:

let funcionario = { email: "abc@abc.com" };
      let funcionarioProxy = new Proxy(funcionario, {
        get(target, prop, receiver) {
          console.log("Armadilha aqui");
          return Reflect.get(target, `***${prop}***`, receiver);
        }
      });

Parti do pressuposto que se o "prop" é a propriedade, eu poderia edita-lo diretamente.(e isso não funcionou). No caso, vendo a resposta do professor, eu entendi que para retornar ou acrescenter algo no e-mail, precisa da propriedade como um todo, ou seja "Reflect.get(target, prop, receiver)", seria isso?

3 respostas

Fala ai Alexandre, tudo bem? Não entendi o "eu poderia edita-lo diretamente.(e isso não funcionou)".

O que seria essa alteração e como você fez?

Fico no aguardo e desculpa o mal entendimento da dúvida.

Tranquilo, Matheus. A dúvida seria referente a está linha. Meu código(não funcionou)

return Reflect.get(target, `***${prop}***`, receiver);

Resposta do professor:

return '**' + Reflect.get(target, prop, receiver) + '**' ;   

O exercício pede para imprimir ***abc@abc.com***. No caso, ele coloca os asteriscos entre todo o return. Eu coloquei somente na propriedade. Pq no no caso do meu código não funciona?

solução!

Fala Alexandre, o motivo do seu código não ter funciona é a maneira como o Reflect.get funciona.

O Reflect.get basicamente serve para a gente pegar valores de um objeto, então, você precisa passar como primeiro parâmetro o objeto de onde ele vai pegar os valores. Como segundo parâmetro você informa uma propriedade existente no objeto. O terceiro é opcional, ele basicamente será o valor de this.

Sendo assim, se você chamar:

Reflect.get(target, `***${prop}***`, receiver)

Você está dizendo para ele pegar uma propriedade com *** que não existe, isso vai retornar undefined.

Agora quando você faz:

return '**' + Reflect.get(target, prop, receiver) + '**'

Você pegou os valores corretamente e o resultado concatenou com uma outra String.

Espero ter ajudado.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software