GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

No menu could be recovered. Follow the blue links in the page.

This view

  • Original page
  • New address

GeezerVison is showing es.javascript.info — Aplicación parcial para inicio de sesión

  • Tutorial
  • El lenguaje JavaScript
  • Trabajo avanzado con funciones
  • Función bind: vinculación de funciones
regresar a la lección

Aplicación parcial para inicio de sesión

importancia: 5

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.

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

  2. O cree una función parcial desde user.login que use user como contexto y tenga el primer argumento correcto:

    askPassword(user.login.bind(user, true), user.login.bind(user, false));
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.