Kirish uchun qisman dastur
Vazifa this yo'qotishni so'rang ning biroz murakkab variantidir.
user obyekti oâzgartirildi. Endi ikkita funktsiya loginOk/loginFail oârniga, unda bitta user.login(true/false) funktsiyasi mavjud.
Quyidagi kodda askPassword-ni user.login(true) ok va user.login(false) fail deb chaqirishi uchun nima qilish kerak?
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(?, ?); // ?
Siz faqat ajratilgan qismni oâzgartirishiz kerak.
-
Yoki oârash funktsiyasidan foydalaning, qisqacha boâlishi uchun oâq:
askPassword( () => user.login(true), () => user.login(false) );Endi u tashqi oâzgaruvchanlardan
useroladi va odatdagi usulda ishlaydi. -
Yoki
userni kontekst sifatida ishlatadigan va toâgâri birinchi argumentga ega boâlganuser.logindan qisman funktsiya yarating:askPassword(user.login.bind(user, true), user.login.bind(user, false));