Aplicación parcial para inicio de sesión
La tarea es una variante un poco más compleja de Arreglar una función que perdió "this".
El objeto user
fue modificado. Ahora, en lugar de dos funciones loginOk/loginFail
, tiene una sola función user.login(true/false)
.
¿Qué deberíamos pasar a askPassword
en el código a continuación, para que llame a user.login(true)
como ok
y user.login(false)
como fail
?
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(?, ?); // ?
Sus cambios solo deberían modificar el fragmento resaltado.
-
Utilice una función wrapper (envoltura), de tipo arrow (flecha) para ser conciso:
askPassword(() => user.login(true), () => user.login(false));
Ahora obtiene
user
de variables externas y lo ejecuta de la manera normal. -
O cree una función parcial desde
user.login
que useuser
como contexto y tenga el primer argumento correcto:askPassword(user.login.bind(user, true), user.login.bind(user, false));