JavaScriptové perličky IX.

Jednou z věcí, které se vyskytují u pokročilejších objektových programovacích jazyků, jsou getters a setters (omlouvám se jazykovým puritánům, ale výstižný český překlad mě nenapadá).  Jde o to, že občas je potřeba při změněně nějaké vlastnosti objektu vykonat nějakou akci. Příklad může být překreslení okna při změně jeho titulku. Někdy je naopak vlastnost vhodné dopočítat pomocí nějaké funkce (např. šířku a výšku obdélníkového prvku ze souřadnic jeho rohů). Řešení je jednoduché – speciální metody, které se zavolají při zápisu nebo čtení dané vlastnosti. Právě tyto metody se obvykle nazývají getters/setters.

A jak je na tom JavaScript? Od veze 1.5 (Mozilla & spol.) podporuje u objektů getters a setters pomocí speciální syntaxe. Místo zdlouhavého vysvětlování ukážu příklad, a ten by vám měl k pochopení stačit.

function FileName() {};

FileName.prototype = {
  drive: null,
  path: null,
  fileName: null,
  ext: null,

  parseToComponents: function(aWholeFileName) {
    ...
  },

  get wholeFileName() {
    return this.drive + this.path + this.filename + this.ext;
  },

  set wholeFilename(aValue) {
    components = this.parseToComponents(aValue);

    this.drive    = components[0];     
    this.path     = components[1];     
    this.fileName = components[2];     
    this.ext      = components[3];     
  }  
}