Derse geri dön
Bu materyal sadece dillerinde mevcuttur. Lütfen Türkçe diline çevirmek için bize yardım edin.

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.

  1. Bir saklayıcı fonksiyon ile, daha net olmak gerekirse ok fonksiyonu ile:

    askPassword(() => user.login(true), () => user.login(false));

    Böylece user dış değişkenlerden alınır ve normal bir biçimde çalıştırılır.

  2. Veya user.login'den bir kısmi fonksiyon üreterek; Bu fonksiyon kaynak olarak user kullanır ve doğru ilk argümana sahiptir.

    askPassword(user.login.bind(user, true), user.login.bind(user, false));