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));