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
user
oladi va odatdagi usulda ishlaydi. -
Yoki
user
ni kontekst sifatida ishlatadigan va to’g’ri birinchi argumentga ega bo’lganuser.login
dan qisman funktsiya yarating:askPassword(user.login.bind(user, true), user.login.bind(user, false));