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

Dúvida sobre o exercício!

Olá!

A forma como solucionei o exercício foi a seguinte:

        let funcionario = {email: 'abc@abc.com'};

        let funcionarioProxy = new Proxy( funcionario, {
            get(target, prop, receiver) {

              if( ['email'].includes(prop) ){
                return `**${funcionario[prop]}**`;
              }

              console.log("Armadilha aqui");
              return Reflect.get(target, prop, receiver);

            }
        });


        console.log(funcionarioProxy.email);
        console.log(funcionario.email);

Ao invés de utilizar:

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

Retornei como:

return `**${funcionario[prop]}**`;

Além disso, utilizei um if, para verificar se existia a propriedade "email" no objeto:

if( ['email'].includes(prop) )

A forma como solucionei também está correta?

Ainda não entendi como funciona o Reflect e o padrão de projeto Proxy. Estou bem confusa em quais situações utilizar o proxy. Entendi que o Proxy funciona como um "objeto mentiroso" que encapsula o objeto original, e que no caso do exercício do Aluraframe, utilizamos o proxy para escutar as ações do usuário, e ao escutar ele por debaixo dos panos faz um update do formulário para a lista, mas em quais outras situações poderíamos utilizar? E teria uma explicação mais clara sobre o proxy e reflect?

Obrigada!

3 respostas
solução!

Fala ai Henrique, tudo bem? Sim, sua solução é válida.

Como eu gosto de dizer:

Na maioria das vezes vai haver mais de uma solução para dado um problema.

E esse caso não foi diferente.

Sobre seus pontos:

E teria uma explicação mais clara sobre o proxy e reflect?

Proxy

O Proxy é bastante utilizando para cenários onde dado uma leitura ou escrita em um objeto, a gente quer fazer algo.

Para logs por exemplo, toda vez que mudar o valor do objeto queremos logar o valor antigo/novo.

Caso você queira tornar um array imutável, poderíamos utilizar o Proxy, para bloquear o uso de .push e demais funções que mudam o array.

Reflect

Com o Reflect conseguimos trabalhar com reflexões em JavaScript, isso nos da um poder muito grande, podemos trazer mais dinâmismo para os códigos, realizar manipulações.

Por exemplo, podemos criar/chamar funções ou propriedades de forma dinâmica.

Mas, hoje em dia com a chegada de outras funcionalidades do JavaScript, utilizar Reflect é bem difícil, particularmente nunca usei em projetos pessoais ou de trabalho.

Espero ter ajudado.

Obrigada Matheus ;)

Magina Henrique, sempre que precisar não deixe de criar suas dúvidas.

Abraços e bons estudos.

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