JS OOP - 从函数调用另一个类的类方法

问题描述 投票:0回答:1

我对 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 但显然我不是..

排队的问题是:

  1. 定义中有两个参数时,如何仅使用一个参数来调用 manager.execute?!

  2. 为什么要使用 new 关键字调用函数,例如 new PlaceOrderCommand("Pad Thai", "1234")

  3. 在构造函数中刚赋值的时候execute2如何调用箭头函数?!

所有这些事情都非常令人困惑,对我来说似乎很神奇..

javascript oop design-patterns
1个回答
0
投票

tldr - 在互联网上找到可靠的信息很难

我超级困惑

如果我没有意识到可怕的信息无处不在,我就会这么做

答案:

  1. manager.execute
    仅需要一个参数 - 命令实例(或者,具有接受订单数组的
    execute2
    方法的对象)。我想创建这种模式的人可能会想:“将来,我可以有一个接受更多参数的命令,并且我可以通过传递
    ...args

    来实现这一点
  2. 因为这个网站的作者不知道他们在做什么

  3. execute2
    是箭头函数。因此,管理器只需在传入的对象上调用
    execute2
    方法,并将
    orders
    数组保存在
    OrderManager
    实例中。

© www.soinside.com 2019 - 2024. All rights reserved.