ÐÑполÑзование ÑаÑÑиÑно пÑименÑнной ÑÑнкÑии Ð´Ð»Ñ Ð»Ð¾Ð³Ð¸Ð½Ð°
ÐÑо задание ÑвлÑеÑÑÑ Ð½ÐµÐ¼Ð½Ð¾Ð³Ð¾ ÑÑложнÑннÑм ваÑианÑом одного из пÑедÑдÑÑÐ¸Ñ â ÐÑпÑавÑÑе ÑÑнкÑиÑ, ÑеÑÑÑÑÑÑ "this".
ÐбÑÐµÐºÑ user бÑл изменÑн. ТепеÑÑ Ð²Ð¼ÐµÑÑо двÑÑ
ÑÑнкÑий loginOk/loginFail Ñ Ð½ÐµÐ³Ð¾ еÑÑÑ ÑолÑко одна â user.login(true/false).
ЧÑо нÑжно пеÑедаÑÑ Ð² вÑзов ÑÑнкÑии askPassword в коде ниже, ÑÑÐ¾Ð±Ñ Ð¾Ð½Ð° могла вÑзÑваÑÑ ÑÑнкÑÐ¸Ñ user.login(true) как ok и ÑÑнкÑÐ¸Ñ user.login(false) как fail?
function askPassword(ok, fail) {
let password = prompt("Password?", '');
if (password == "rockstar") ok();
else fail();
}
let user = {
name: 'John',
login(result) {
alert( this.name + (result ? ' logged in' : ' failed to log in') );
}
};
askPassword(?, ?); // ?
ÐаÑи Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð·Ð°ÑÑагиваÑÑ ÑолÑко вÑделеннÑй ÑÑÐ°Ð³Ð¼ÐµÐ½Ñ ÐºÐ¾Ð´Ð°.
-
Ðожно иÑполÑзоваÑÑ ÑÑÑелоÑнÑÑ ÑÑнкÑиÑ-обÑÑÑкÑ:
askPassword(() => user.login(true), () => user.login(false));ТепеÑÑ Ð¾Ð½Ð° полÑÑаеÑ
userизвне и ноÑмалÑно вÑполнÑеÑÑÑ. -
Ðли же можно ÑоздаÑÑ ÑаÑÑиÑно пÑименÑннÑÑ ÑÑнкÑÐ¸Ñ Ð½Ð° оÑнове
user.login, коÑоÑÐ°Ñ Ð¸ÑполÑзÑÐµÑ Ð¾Ð±ÑекÑuserв каÑеÑÑве конÑекÑÑа и полÑÑÐ°ÐµÑ ÑооÑвеÑÑÑвÑÑÑий пеÑвÑй аÑгÑменÑ:askPassword(user.login.bind(user, true), user.login.bind(user, false));