Izrada custom confirm dialoga, ideja no.3
I zadnji korak koji me jučer razveselio, tarannn:
function someParentFunkcion(a,b,c,f){
//some code before confirmation
if(!dialogConfirm("Želiš li nastaviti?", arguments) return;
//some code after confirmation
}
arguments - to je tih devet viška karaktera koje spomenuh u uvodu. Doduše, tih devet karaktera su uvijek isti kod svake konfirmacije, tako da je u potpunosti ispunjen uvjet 1 koji kaže da se u snipetu ništa ne mora mijenjati osim poruke konfirmacije.
A uvjet dva je također ispunjen, jer se snippet ubaci gdje god treba bez ikakve potrebne rekonstrukcije funkcije unutar koje se umeće.
No što je točno arguments?
arguments je nativna varijabla koja nosi informacije o funkciji unutar koje se nalazi.
Znači:
arguments.callee -> to je funkcija unutar koje se arguments pojavljuje
arguments.length -> broj parametara koji su prosljeđeni u funkciju
arguments[0] -> prvi parametar funkcije
arguments[1] -> drugi parametar funkcije
// itd.
Sada kada imamo arguments, prosljedimo ga u dialogCofirm i unutra možemo sve odraditi sa njime.
Također je ranije i “uniqProcessName” bio suvišan zato jer jedinstveno ime procesa možemo dobiti na način:
someParentFunkcion.toString()
ili u slučaju argumentsa:
arguments.callee.toString();
Tarann…to je to.
Ima još jedna cakica koju je vrijedno znati, a bila je potrebna za resolvati ovo sa arguments.
Radi se o tome, kako pozvati neku funkciju sa određenim parametrima, gdje nam nije unaprijed poznato koliko tih parametara ima. Kao što je ovdje slučaj…arguments se može pojaviti sa nula, jednim ili deset parametara.
Seljački bi bilo:
if(params.length==0) someFunkc();
else if(params.length==1) someFunkc(params[0]);
else if(params.length==2) someFunkc(params[0], params[1]);
else if(params.length==3) someFunkc(params[0], params[1], params[2]);
// seljački, ali i to bi držalo vodu..samo iteriramo do jedno 20 parametara xd.
Dobar način za napraviti isto je:
someFunkc.apply(this,params || []);