ÄásteÄná aplikace pro pÅihlášenÃ
Tato úloha je trochu složitÄjšà variantou úlohy Opravte funkci, která ztrácà âthisâ.
Objekt uživatel se zmÄnil. Nynà má mÃsto dvou funkcà pÅihlášenÃOK/pÅihlášenÃSelhalo jedinou funkci uživatel.pÅihlaÅ¡(true/false).
Co bychom mÄli pÅedat funkci zeptejSeNaHeslo v následujÃcÃm kódu, aby volala uživatel.pÅihlaÅ¡(true) jako ok a uživatel.pÅihlaÅ¡(false) jako selhal?
function zeptejSeNaHeslo(ok, selhal) {
let heslo = prompt("Heslo?", '');
if (heslo == "rockstar") ok();
else selhal();
}
let uživatel = {
jméno: 'Jan',
pÅihlaÅ¡(výsledek) {
alert( this.jméno + (výsledek ? ' se pÅihlásil' : ' se nedokázal pÅihlásit') );
}
};
zeptejSeNaHeslo(?, ?); // ?
VaÅ¡e zmÄny by mÄly modifikovat pouze zvýraznÄnou Äást.
-
BuÄ použijeme obalovou funkci, pro struÄnost Å¡ipkovou:
zeptejSeNaHeslo(() => uživatel.pÅihlaÅ¡(true), () => uživatel.pÅihlaÅ¡(false));Nynà naÄte promÄnnou
uživatelz vnÄjÅ¡Ãch promÄnných a funguje bÄžným způsobem. -
Nebo vytvoÅÃme ÄásteÄnou funkci z
uživatel.pÅihlaÅ¡, která použÃváuživateljako kontext a má pÅÃsluÅ¡ný prvnà argument:zeptejSeNaHeslo(uživatel.pÅihlaÅ¡.bind(uživatel, true), uživatel.pÅihlaÅ¡.bind(uživatel, false));