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 fr.javascript.info — Application de fonction partielle pour login

  • Tutoriel
  • JavaScript le langage
  • Travail avancé avec les fonctions
  • Le "bind" de fonction
retour au cours

Application de fonction partielle pour login

importance: 5

La tâche est une variante un peu plus complexe de Fix a function that loses "this".

L’objet user a été modifié. Maintenant, au lieu de deux fonctions loginOk/loginFail, il a une seule fonction user.login(true/false).

Que faire passer à askPassword dans le code ci-dessous, de sorte qu’il appelle user.login(true) comme ok et user.login(false) comme 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(?, ?); // ?

Vos modifications doivent uniquement modifier le fragment surligné.

  1. Soit utiliser une fonction wrapper, une fléchée pour être concis:

    askPassword(() => user.login(true), () => user.login(false));

    Maintenant, elle obtient user des variables externes et l’exécute normalement.

  2. Ou créez une fonction partielle à partir de user.login qui utilise user comme contexte et a le bon premier argument:

    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.