推荐答案
-- -------------------- ---- ------- -------- ----------------- ---- ------------ ------- ----------- ------------------- - ----- -------------- - ----------------- ---------------- - -------- --------- ------ - -------------------- ------- -------------- ---- ---------- -------------------------- ----- ------ - -------------------------- ------ -------------------- -------------- --------- ---------------------------- ------ ------- -- ------ ----------- - ----- ------- - ---------- -------------- ------- ----- ------- - ------ ---------- ------- --- --------- - - ----- -------- - --- ---------- -------------------------- ----
本题详细解读
1. 装饰器基础
装饰器是一种特殊类型的声明,它可以被附加到类声明、方法、访问器、属性或参数上。装饰器使用 @expression
的形式,其中 expression
必须是一个函数,它会在运行时被调用,被装饰的声明信息作为参数传入。
2. 方法装饰器
方法装饰器可以应用于类的方法上。它接收三个参数:
target
: 对于静态成员来说是类的构造函数,对于实例成员来说是类的原型。propertyKey
: 方法的名称。descriptor
: 方法的属性描述符。
3. 自定义装饰器实现
在上面的例子中,我们定义了一个名为 logMethod
的装饰器。这个装饰器的作用是在调用被装饰的方法时,打印出方法的名称、传入的参数以及方法的返回值。
4. 装饰器的应用
我们将 logMethod
装饰器应用到了 MyClass
类的 myMethod
方法上。当 myMethod
被调用时,装饰器会自动执行,打印出相关的日志信息。
5. 运行结果
当我们创建一个 MyClass
的实例并调用 myMethod
方法时,控制台会输出如下内容:
Calling method: myMethod with arguments: ["Hello",42] Method: myMethod returned: "Received: Hello and 42"
这个例子展示了如何通过自定义装饰器来增强方法的功能,而不需要修改方法本身的代码。