装饰器用于在不修改原函数代码的情况下,为函数“增加额外功能”。它本质上是一个接收函数并返回新函数的高阶函数,通常依赖 闭包 来保存外部状态。
理解装饰器前,建议先把“函数是对象”这件事想清楚:见 函数 / 函数作为参数使用。