36 lines
678 B
Markdown
36 lines
678 B
Markdown
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).
|
|
|
|
```js run
|
|
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);
|
|
*/!*
|
|
```
|