Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida retorno trap get

Estava / estou com certa dificuldade de entender um pouco esse trecho do curso. Enfim, em certo momento, é feito o seguinte código:

 const negociacaoProxy = new Proxy(
                new Negociacao(DataHelper.converteTextoParaData("2020-07-05"), 2, 100),
                {
                    get: function (target, propKey, receiver) {
                        console.log(`${propKey} get interceptado`);
                        return Reflect.get(target, propKey, receiver);
                    },
                }
);

A duvida está no retorno da trap "get". O mestre Flavio utiliza o Reflect.get(target, prop, receiver) como retorno da função, porém em algumas consultas no MDN e em videos vi que o retorno é feito utilizando o "target[prop] " direto no retorno.

A dúvida: Qual seria a diferença e quais impactos teria de uma utilização para outra ? Também, no MDN, não é passado o parametro "receiver"... Existe necessidade de recebe-lo como parametro ?

const negociacaoProxy = new Proxy(
                new Negociacao(DataHelper.converteTextoParaData("1997-07-05"), 2, 100),
                {
                    get: function (target, propKey) {
                        console.log(`${propKey} get interceptado`);
                        **return target[propKey];**
                        //Por que não usar assim?
                    },
                }
            );
1 resposta
solução!

Fala ai Jair, tudo bem? Vamos lá:

Qual seria a diferença e quais impactos teria de uma utilização para outra ? Também, no MDN, não é passado o parametro "receiver"... Existe necessidade de recebe-lo como parametro ?

Basicamente são jeitos diferente de realizar a mesma coisa, a abordagem com Reflect é mais nova enquanto a target[prop] direto seria um jeito tradicional.

Caso você utilize apenas os dois primeiros parâmetros da Reflect.get os códigos são similares, a diferença seria em relação ao terceiro parâmetro que seria o contexto do this para a chamada do target.

Fora esse detalhe os códigos são equivalentes e fica a critério de cada um o modo que prefere utilizar, aqui existem algumas diferenças de semântica e escrita:

https://github.com/tvcutsem/harmony-reflect/wiki

Espero ter ajudado.