Как это устроено
Command превращает запрос в объект со всей информацией о действии. Так удобно параметризовать вызовы, ставить в очередь, логировать и делать undo.
class Light {
on() { console.log("Light is on"); }
off() { console.log("Light is off"); }
}
class LightOnCommand {
constructor(light) {
this.light = light;
}
execute() { this.light.on(); }
undo() { this.light.off(); }
}
const cmd = new LightOnCommand(new Light());
cmd.execute();
cmd.undo();
На фронте похожая идея — action-объекты в редакторах, макросы UI, очередь offline-операций.
Итог: команда = «действие как данные» с execute/undo, а не прямой вызов метода получателя.