Adloun

JavaScript : rendre le Web interactif (école d'ingénieur) · Chapitre 4 · Application directe du cours

this perdu

Portée, fermetures et this · niveau 2

Énoncé

Expliquer la sortie de ce programme, puis corriger le dernier appel de deux façons.


const panier = {
  articles: 3,
  resume() {
    return `${this.articles} article(s)`;
  },
};

function afficherPlusTard(fournisseur) {
  console.log(fournisseur());
}

console.log(panier.resume());
afficherPlusTard(panier.resume);

Corrigé


3 article(s)
ex7-this.mjs:4
    return `${this.articles} article(s)`;
                   ^

TypeError: Cannot read properties of undefined (reading 'articles')

Le premier appel, panier.resume(), a l'objet à gauche du point. Dans afficherPlusTard, la méthode est appelée par fournisseur(), sans objet : this vaut undefined. Deux corrections :


const panier = {
  articles: 3,
  resume() {
    return `${this.articles} article(s)`;
  },
};

function afficherPlusTard(fournisseur) {
  console.log(fournisseur());
}

afficherPlusTard(() => panier.resume());
afficherPlusTard(panier.resume.bind(panier));

3 article(s)
3 article(s)

100 % gratuit

La suite du chapitre est sur Adloun

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →