en.javascript.info/1-js/06-advanced-functions/10-bind/5-question-use-bind/task.md
Ilya Kantor 7f1d5de09e minor
2019-05-22 02:37:20 +03:00

678 B

importance: 5


Fix a function that loses "this"

The call to askPassword() in the code below should check the password and then call user.loginOk/loginFail depending on the answer.

But it leads to an error. Why?

Fix the highlighted line for everything to start working right (other lines are not to be changed).

function askPassword(ok, fail) {
  let password = prompt("Password?", '');
  if (password == "rockstar") ok();
  else fail();
}

let user = {
  name: 'John',

  loginOk() {
    alert(`${this.name} logged in`);
  },

  loginFail() {
    alert(`${this.name} failed to log in`);
  },

};

*!*
askPassword(user.loginOk, user.loginFail);
*/!*