Giriş işlemi için kısmi uygulama.
önem: 5
Bir önceki Soru `this`'i kaybediyor.’dan biraz daha karmaşık bir göreviniz var.
user objesi değiştirildi. Şimdi loginOk/loginFail fonksiyonlarının yerine tek bir fonksiyon user.login(true/false) var.
Aşağıdaki askPassword’a ne iletilirse bu user.login(true)'u ok veya user.login(fail)'i fail olarak çağırır?
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(?, ?); // ?
Sadece işaretlenmiş bölümde gerçekleştiriniz.
-
Bir saklayıcı fonksiyon ile, daha net olmak gerekirse ok fonksiyonu ile:
askPassword(() => user.login(true), () => user.login(false));Böylece
userdış değişkenlerden alınır ve normal bir biçimde çalıştırılır. -
Veya
user.login’den bir kısmi fonksiyon üreterek; Bu fonksiyon kaynak olarakuserkullanır ve doğru ilk argümana sahiptir.askPassword(user.login.bind(user, true), user.login.bind(user, false));