Zabalí volanie do objektu, ktorý sa dá odložiť, zaradiť do frontu alebo vrátiť.
class Prikaz { vykonaj() { throw new Error('abstraktná metóda'); } vrat() { throw new Error('abstraktná metóda'); }} class VlozText extends Prikaz { constructor(dokument, text) { super(); this.dokument = dokument; this.text = text; } vykonaj() { this.dokument.vloz(this.text); } vrat() { this.dokument.zmaz(this.text.length); }} class Tlacidlo { historia = []; stlac(prikaz) { prikaz.vykonaj(); this.historia.push(prikaz); } spat() { const posledny = this.historia.pop(); posledny.vrat(); }} const tlacidlo = new Tlacidlo();tlacidlo.stlac(new VlozText(dokument, 'ahoj'));tlacidlo.stlac(new VlozText(dokument, ' svet'));tlacidlo.spat(); // volanie sa dá vrátiť, lebo je to objekt