this lexical ou dynamique, retour sur les fonctions fléchées
Observez comment this dynamique dépend du site d’appel et comment les fonctions fléchées capturent le this lexical ; utilisez de petits exemples clairs
this lexical ou dynamique, retour sur les fonctions fléchées est une leçon JavaScript Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 3. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage JavaScript Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours JavaScript Academy comprend 3 leçons au total.
Vue d'ensemble
Objectif : savoir vers quoi pointe this selon le contexte.
- this dynamique : déterminé par le point d'appel
- this des arrows : capturé lexicalement
- Piège courant : l'extraction d'une méthode fait perdre this
- Utilisez des arrows pour conserver this dans les fonctions de rappel

Démonstration de this dynamique
this dynamique : l'appel sous la forme obj.method() définit this = obj ; l'extraction de la fonction fait perdre l'objet.
// Dynamic this depends on HOW we call the function
const person = {
name: "Ayla",
say: function () {
return "Hi " + this.name;
}
};
console.log("method call:", person.say()); // "Hi Ayla"
// Extract then call: this is lost
const talk = person.say;
console.log("extracted call:", talk()); // likely "Hi undefined" in strict mode -> this is undefined

Arrow = this lexical
Une arrow prend this dans la portée de la fonction ou de l'objet environnant au moment de sa création ; sa valeur ne change pas lors de l'appel.
// Arrow functions capture this from where they are created
const box = {
label: "blue",
showLater: function () {
// Arrow keeps this === box
const fn = () => "box:" + this.label;
return fn();
}
};
console.log("arrow captured this:", box.showLater()); // "box:blue"

Fonctions de rappel : conserver this avec les arrows
Dans les fonctions de rappel, une fonction normal perd souvent this ; une arrow conserve intact le this extérieur.
// Using a normal function in a callback can lose this
const widget = {
id: 7,
normal: function () {
setTimeout(function () {
// here this is not widget in many environments
console.log("normal cb this.id:", this && this.id);
}, 0);
},
arrow: function () {
setTimeout(() => {
// arrow keeps lexical this from arrow()
console.log("arrow cb this.id:", this.id);
}, 0);
}
};
widget.normal();
widget.arrow();

Correction simple de l'extraction
Si une méthode est extraite, entourez-la d'une petite arrow qui capture l'objet, ou utilisez bind (dans la prochaine leçon). Restez simple pour les débutants.
// If you must extract, wrap with an arrow capturing the object
const account = {
owner: "Mila",
label: function () { return "Owner:" + this.owner; }
};
// Lost this:
const lost = account.label;
console.log("lost:", lost()); // "Owner:undefined" (this missing)
// Fixed: create an arrow that closes over account
const safe = () => account.label();
console.log("fixed via arrow wrapper:", safe());

Bonnes pratiques
Conseils :
- Méthodes : appelez-les avec obj.method() afin que this soit l'objet.
- Fonctions de rappel : préférez les arrows pour conserver le this lexical.
- Les méthodes extraites perdent this ; entourez-les d'une arrow ou utilisez bind.

Question sur this et les arrows
Vérification rapide : comportement de this avec une arrow.

Récapitulatif
Récapitulatif : this est dynamique pour les fonctions normal (défini par le point d'appel) et lexical pour les arrows (capturé au moment de leur création). Utilisez des arrows dans les fonctions de rappel et entourez les méthodes extraites pour conserver un comportement simple.

Questions Fréquemment Posées
La leçon « this lexical ou dynamique, retour sur les fonctions fléchées » est-elle gratuite ?
Oui — le texte complet de « this lexical ou dynamique, retour sur les fonctions fléchées » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours JavaScript Academy, passe à CoddyKit PRO. Le cours JavaScript Academy comprend 3 leçons au total.
Qu'est-ce que j'apprendrai dans « this lexical ou dynamique, retour sur les fonctions fléchées » ?
Observez comment this dynamique dépend du site d’appel et comment les fonctions fléchées capturent le this lexical ; utilisez de petits exemples clairs Tu pratiques JavaScript Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer JavaScript Academy ?
Aucune expérience préalable n'est requise. JavaScript Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 3.
Combien de temps prend la leçon « this lexical ou dynamique, retour sur les fonctions fléchées » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon JavaScript Academy ?
Oui. Chaque leçon JavaScript Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- this lexical ou dynamique, retour sur les fonctions fléchées
- Pièges de l’extraction de méthodes et application partielle
- Alternatives fonctionnelles — transmettre le contexte, fermetures et petits utilitaires