darsga qaytish

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.

  1. 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.

  2. Yoki user ni kontekst sifatida ishlatadigan va to’g’ri birinchi argumentga ega bo’lgan user.login dan qisman funktsiya yarating:

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