Dans la plupart des langages de programmation orientés objet, le mot-clé "this" a une signification particulière. Il fait généralement référence à l'objet qui constitue le contexte d'exécution (c'est-à-dire à l'instance actuelle de l'objet). Par exemple, nous utilisons this pour faire référence à une propriété d'objet depuis l'intérieur : nous tapons this.propertyName, le contexte est alors l'objet et this y fait référence.
'ceci'en JavaScript
En JavaScript c'est plus compliqué car lorsque cette dépend non seulement de la manière dont la fonction est définie, mais aussi de la forme de son appel.
Regardez comment cette fonctionne en fonction du lieu et de la forme de l'invocation.
Le contexte mondial
Utilisé dans un contexte global lié à l'objet global, comme fenêtre dans un navigateur web.
this ; // fenêtre
Méthode interne à l'objet
Utilisé à l'intérieur d'une méthode objet liée à l'objet englobant le plus proche. L'objet est le nouveau contexte de la méthode cette mot-clé. Notez que vous ne devez pas modifier fonction () à la syntaxe ES6 fun : () => this.context car le contexte s'en trouverait modifié.
Utilisé à l'intérieur d'une fonction qui n'a pas de contexte (n'a pas d'objet comme parent) lié au contexte global, même si la fonction est définie à l'intérieur de l'objet.
Notez que nous utilisons var contexte au lieu de let/const contexte parce que laisser et constante modifier le contexte de la variable incluse. var est toujours le plus proche du contexte d'exécution global. laisser et constante déclarer des variables uniquement dans un bloc local.
call() et appliquer() sont JavaScript les fonctions. Celles-ci permettent à un objet d'utiliser des méthodes appartenant à un autre objet. call() prend des arguments séparément où appliquer() les prend sous forme de tableau.
cette est ici lié au nouveau contexte modifié dans call() et appliquer() des méthodes.
Utilisé dans n'importe quel gestionnaire d'événement (par exemple, addeventListener, onclick, attachEvent), il est lié à l'élément du DOM auquel l'événement était attaché.
document.querySelector(".foo").addEventListener("click", function() {
this ; // se réfère à l'élément div `foo`.
}) ;
Fonction flèche ES6
Utilisé à l'intérieur de la fonction arrow, il est toujours lié à sa portée lexicale. Dans la fonction arrow, vous ne pouvez pas réaffecter la fonction cette de quelque manière que ce soit.