V tomto článku predstavím zaujímavé riešenie dojo/aspect, ktoré umožňuje mať pod kontrolou metódy objektu. Toto riešenie má najmä zmysel, ak sa používajú knižnice tretích strán a nechceme alebo nemôžeme ich modifikovať či rozširovať.Všetky metódy modulu dojo/aspect budem demonštrovať na nasledujúcom objekte.Príklad: Demonštračný objekt.
1
2
3
4
5
var o ={
display: function(){
console.log("display");
}
};
Metóda before()
Metóda before() zabezpečí spustenie definovanej funkcie pred zadanou metódou objektu. V našom prípade sa pred metódou display() spustí funkcia before(). Príklad: Demonštrácia metódy before().
1
2
3
4
5
6
function before(){
console.log("before");
}
aspect.before(o, "display", before);
o.display();
Metóda after()
Metóda after() zabezpečí spustenie definovanej funkcie za zadanou metódou objektu. V našom prípade sa po metóde display() spustí funkcia after().Príklad: Demonštrácia metódy after().
1
2
3
4
5
6
function after(){
console.log("after");
}
aspect.after(o, "display", after);
o.display();
Metóda around()
Metóda around() funguje trochu na inom princípe. V prvom rade je potrebné pracovať s parametrom originalMethod. Vďaka tomu môžeme aplikovať metódy before() a after(). V tomto prípade sa metóda display() nevolá automaticky, ale je ju potrebné volať manuálne. Taktiež si je možné zvoliť poradie metód, ako budú volané či rozšíriť telo funkcie o ďalšie metódy. Metóda display() je reprezentovaná parametrom originalMethod.Príklad: Demonštrácia metódy around().
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function before(){
console.log("before");
}
function after(){
console.log("after");
}
function around(originalMethod){
returnfunction(){
before();
originalMethod();
after();
}
}
aspect.around(o, "display", around);
o.display();
Záver
Ak máte zaujímavé tipy kedy je vhodné použiť dojo/aspect, podeľte sa o ne prostredníctvom komentára.27.3.2016, Matej LednárKategória: DojoDojo,dojo/aspect,before(),after(),around()Žiadna časť tohto článku nesmie byť reprodukovaná bez uvedenia autora a URL na túto stránku.Viac informácií nájdete v sekcii O projekte.