1
resposta

CONFUSO

Na aula você diz que a ordem é de cima para baixo, e no exercicio de baixo para cima, qual é o correto afinal?

1 resposta

Olá, Victor!

Na verdade, a ordem de execução dos decorators é sempre de cima para baixo. No exemplo que você mencionou, o @inspect() é o primeiro decorator a ser executado, seguido pelo @logarTempoDeExecução(true). Porém, é importante lembrar que a ordem de aplicação dos decorators na classe pode ser diferente da ordem de execução.

No caso específico do exercício, pode ser que o @logarTempoDeExecução(true) tenha sido aplicado antes do @inspect(), mas na hora da execução, o @inspect() é o primeiro a ser chamado. Isso acontece porque o JavaScript primeiro aplica o último decorator, substituindo o método original, e depois aplica os decorators anteriores.

Por exemplo, se tivermos um método update() decorado com @logarTempoDeExecução(true) e @inspect(), o JavaScript primeiro substituirá o método original com o @logarTempoDeExecução(true), e em seguida, decorará esse método com o @inspect(). Portanto, na hora da execução, o @inspect() será o primeiro a ser chamado.

Espero que isso tenha esclarecido sua dúvida. Se tiver mais alguma pergunta, é só me dizer! Espero ter ajudado e bons estudos!