Na aula você diz que a ordem é de cima para baixo, e no exercicio de baixo para cima, qual é o correto afinal?
Na aula você diz que a ordem é de cima para baixo, e no exercicio de baixo para cima, qual é o correto afinal?
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!