3
respostas

Instrução "acao(target)"

Durante a aula o instrutor utiliza a instrução no get do proxy:

return acao(target);

já no set ele não utiliza o "return".

Qual a função dessa instrução? Não ficou mt clara pra mim.

Código completo:

get(target, prop, receiver) {

                if(props.includes(prop) && ProxyFactory._ehFuncao(target[prop])) {

                    return function() {

                        console.log(`a propriedade "${prop}" foi interceptada`);
                        Reflect.apply(target[prop], target, arguments);
                        return acao(target);
                    };
                }
                return Reflect.get(target, prop, receiver);       
           },

            set(target, prop, value, receiver) {
                if(props.includes(prop)) {
                    target[prop] = value;
                    acao(target);
                }
                return Reflect.set(target, prop, value, receiver);
            }
3 respostas

Oi Kaê, tudo bem? A diferença é que o get sempre precisa retornar um valor, lembra? get é pra gente capturar um valor do objeto, set é pra gente definir um novo valor no objeto, sem retorná-lo.

Ficou mais claro agora por que um tem return e o outro não?

Certo. Ficou sim. E qual a necessidade da função anônima no retorno?

Oi Kaê, a função anônima é por que você está interceptando uma propriedade que é uma chamada de função, então, você retorna uma função que executa por baixo dos panos a função que você está interceptando.

Assim você não quebra um comportamento esperado e consegue executar outras ações nesse meio tempo.

Ficou mais claro agora?

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