我对 JS 设计模式很好奇,决定尝试一下这个网站, 但在命令模式部分我感到非常困惑。您可以在链接中看到解释,但为了这篇文章,我在下面提供了一个代码片段。
class OrderManager {
constructor() {
this.orders = [];
}
execute(command, ...args) {
return command.execute2(this.orders, ...args);
}
}
class Command {
constructor(executee) {
this.execute2 = executee;
}
}
function PlaceOrderCommand(order, id) {
return new Command(orders => {
orders.push(id);
console.log(`You have successfully ordered ${order} (${id})`);
});
}
const manager = new OrderManager();
manager.execute(new PlaceOrderCommand("Pad Thai", "1234"));
我超级困惑,我以为我擅长 JS 但显然我不是..
排队的问题是:
定义中有两个参数时,如何仅使用一个参数来调用 manager.execute?!
为什么要使用 new 关键字调用函数,例如 new PlaceOrderCommand("Pad Thai", "1234")
在构造函数中刚赋值的时候execute2如何调用箭头函数?!
所有这些事情都非常令人困惑,对我来说似乎很神奇..
tldr - 在互联网上找到可靠的信息很难
我超级困惑
如果我没有意识到可怕的信息无处不在,我就会这么做
manager.execute
仅需要一个参数 - 命令实例(或者,具有接受订单数组的 execute2
方法的对象)。我想创建这种模式的人可能会想:“将来,我可以有一个接受更多参数的命令,并且我可以通过传递 ...args
) 来实现这一点
因为这个网站的作者不知道他们在做什么
execute2
是箭头函数。因此,管理器只需在传入的对象上调用 execute2
方法,并将 orders
数组保存在 OrderManager
实例中。