装饰器模式 js
时间: 2023-07-06 07:09:12 浏览: 109
在 JavaScript 中,装饰器模式是一种很常见的设计模式,它可以在不改变对象自身的基础上,给对象添加新的功能。
具体实现方式是通过定义一个装饰器函数,在该函数中对目标对象进行包装,添加新的属性或者方法。例如:
```javascript
function addLog(target) {
const original = target.prototype.log;
target.prototype.log = function (message) {
console.log(`Log: ${message}`);
original.call(this, message);
}
}
@addLog
class Logger {
log(message) {
console.log(message);
}
}
const logger = new Logger();
logger.log('Hello World');
```
在上面的例子中,我们定义了一个 `addLog` 装饰器函数,接受一个目标类 `target` 作为参数。在该函数中,我们首先保存了目标类原有的 `log` 方法,然后重新定义了 `log` 方法,在新的方法中添加了日志输出的功能,并调用了原有的方法。
最后,我们使用 `@addLog` 修饰了 `Logger` 类,这样在创建 `Logger` 实例的时候,就会自动调用 `addLog` 函数,对 `Logger` 类进行装饰,添加新的日志功能。
这就是装饰器模式在 JavaScript 中的应用。
阅读全文