Sauter à un chapitre clé
Comprendre Javascript This Keyword
Lorsque tu explores le monde fascinant de l'informatique, en particulier JavaScript, tu tombes invariablement sur le mot-clé This. Essentiellement une variable de référence, "This" est un élément central de la portée des fonctions Javascript et de la programmation orientée objet.
Définition du mot-clé This en Javascript
Le mot-clé This est un élément fondamental de Javascript qui, dans le contexte d'une portée d'exécution, fait référence à l'objet dont la fonction est une propriété. En termes plus simples, 'This' en Javascript signifie généralement le 'propriétaire' de la fonction, ou l'objet dont une fonction est une méthode, ou le contexte actuel.
La valeur de "This" est toujours déterminée par son contexte d'exécution. Elle ne peut pas être définie manuellement, elle pointera toujours vers un objet, et cet objet ne sera peut-être pas toujours celui que tu attends. Voici un exemple simple :
let object = { greeting : 'Hello, ', speak() { return this.greeting + 'world!' ; } } console.log(object.speak()) ; // renvoie 'Hello, world!'.
Dans cet exemple, "This" dans la méthode speak() fait référence à l'objet. Par conséquent, 'this.greeting' récupère la propriété greeting de l'objet.
Rôle du mot-clé This en JavaScript
En JavaScript, "This" joue un rôle crucial en fournissant à une fonction un moyen dynamique d'accéder au contexte dans lequel elle est en train d'être exécutée. C'est très utile lorsque tu travailles avec la programmation orientée objet ou lorsque tu souhaites accéder aux propriétés d'une méthode d'un objet.
Prenons un autre exemple pour illustrer le rôle de ce mot-clé :
let student = { firstName : 'John', lastName : 'Doe', getFullName : function(){ return this.firstName + " " + this.lastName ; } } console.log(student.getFullName()) ; // renvoie 'John Doe'.
Ici, 'this.firstName' récupère la propriété firstName de l'objet élève et 'this.lastName' récupère la propriété lastName de l'objet élève.
Importance du mot-clé This dans la programmation informatique
Le mot-clé This est un aspect fondamental de nombreux langages de programmation, et pas seulement de JavaScript. Il permet aux méthodes d'accéder aux objets auxquels elles appartiennent, ce qui nous permet d'écrire un code plus souple et réutilisable.
Inconnu de beaucoup, le mot-clé "This" joue un rôle clé dans la gestion des événements en JavaScript. La puissance du mot-clé "This" est mise en évidence lors de la gestion des événements, où il représente l'élément qui a déclenché un événement, fournissant ainsi des informations utiles sur le contexte de l'événement.
L'utilisation du mot-clé "this" permet souvent d'obtenir un code plus concis et plus lisible, car tu peux faire référence aux propriétés et aux méthodes de l'objet actuel sans avoir besoin de connaître son nom :
let car = { speed : 0, accelerate : function(amount) { this.speed += amount ; } } car.accelerate(10) ; console.log(car.speed) ; // renvoie 10.
Ici, 'this.speed' fait référence à la propriété de vitesse de l'objet voiture, ce qui permet une manipulation souple sans faire directement référence à la voiture par son nom.
Comment utiliser le mot-clé This en Javascript
Après avoir compris ce qu'est le mot-clé 'This' dans le monde du JavaScript, il est maintenant temps d'approfondir ses applications. Comment utiliser cet outil incroyablement polyvalent pour maximiser ton potentiel de codage ? Explorons-le !
Vue d'ensemble de l'application du mot-clé This en JavaScript
Les principales applications du mot-clé "This" se trouvent dans les constructeurs d'objets, les méthodes de prototypes et les méthodes d'objets. La valeur de 'This' reste initialement indéfinie jusqu'à ce qu'une fonction où elle est définie s'exécute. Voici un résumé de base :
- Lorsqu'une fonction opère globalement, 'This' fait référence à l'objet global.
- Pour une fonction qui fait partie d'un objet, 'This' fait référence à l'objet dont elle fait partie.
- En "mode strict", "Ceci" reste à la valeur définie lors de l'entrée dans le contexte d'exécution. S'il n'est pas défini, il reste indéfini.
- Lorsqu'une fonction est appelée en tant que gestionnaire d'événement, "This" devient l'élément qui a déclenché l'événement.
Le contexte dans lequel le code s'exécute détermine la valeur de 'This'. Considère-le comme le sujet du contexte, un peu comme on utilise le mot "I" en anglais. Voici un exemple pratique pour décrire le comportement :
function globalCheck(){ return this ; } console.log(globalCheck()) ; //renvoie l'objet global Window.
Dans ce cas, la fonction est exécutée dans un contexte global, c'est pourquoi "This" fait référence à l'objet fenêtre.
Guide détaillé sur l'utilisation de ce mot-clé
Pour utiliser efficacement le mot-clé "This" dans tes projets JavaScript, voici un guide détaillé de trois scénarios spécifiques dans lesquels "This" montre son véritable potentiel : Méthodes d'objet, Fonctions de constructeur et Héritage prototypique.
Scénario | Description avec exemple |
Méthodes d'objet |
let person = { name : 'Alice', greet : function() { console.log('Hi, ' + this.name) ; } } person.greet() ; //returns 'Hi, Alice'. Dans ce scénario, 'This' dans la méthode greet fait référence à l'objet person. Par conséquent, 'this.name' correspond à la propriété name de l'objet person. |
Fonctions du constructeur |
function Person(name) { this.name = name ; this.greet = function() { console.log('Hi, ' + this.name) ; } } let bob = new Person('Bob') ; bob.greet() ; //returns 'Hi, Bob'. Dans ce cas, "This" dans la fonction Person contient un lien vers l'objet créé par le mot-clé new. Par conséquent, "this.name" définit une propriété de nom sur le nouvel objet. |
Héritage prototypique |
function Person(name) { this.name = name ; } Person.prototype.greet = function() { console.log('Hi, ' + this.name) ; } let charlie = new Person('Charlie') ; charlie.greet() ; //returns 'Hi, Charlie'. Dans ce cas, "This" dans le prototype de la méthode greet est lié à l'objet sur lequel il est appelé, ce qui fait que "this.name" correspond à la propriété name de l'objet appelant. |
En conclusion, la sémantique de "This" en Javascript tient compte des différentes portées et contextes dans lesquels une fonction peut s'exécuter, ce qui en fait un outil polyvalent et robuste pour la programmation de n'importe quelle tâche.
Fonction fléchée en Javascript et mot-clé This
Concept novateur introduit avec ES6, les fonctions fléchées constituent une syntaxe concise pour l'écriture d'expressions de fonctions en JavaScript. Elles sont anonymes et modifient la façon dont "This" se lie dans les fonctions. Les fonctions fléchées sont syntaxiquement similaires aux fonctions ordinaires, mais la principale différence réside dans le comportement contextuel du mot-clé "This".
Interaction du mot-clé This avec les fonctions fléchées de JavaScript
Dans les fonctions JavaScript ordinaires, chaque nouvelle fonction définit sa propre valeur 'This' en fonction de la façon dont la fonction est appelée. Cependant, les fonctions fléchées sont conçues pour se comporter différemment. Plutôt que d'établir leur propre contexte "This", les fonctions flèches capturent le contexte "This" du contexte lexical qui les entoure ; en d'autres termes, elles "héritent" du contexte "This" de leur parent.
let car = { speed : 0, accelerate : function (amount) { setTimeout(() => { this.speed += amount ; console.log(this.speed) ; }, 1000) ; } } ; car.accelerate(10) ; // imprime 10.
Dans cet exemple, 'This' à l'intérieur de la fonction flèche utilisée pour le rappel setTimeout fait référence à l'objet voiture, qui entoure la portée de cette fonction. Contrairement aux fonctions ordinaires, le contexte 'This' ne change pas à cause du setTimeout. Remarque encore une fois que la fonction arrow ne crée pas son propre 'This', elle capture le contexte 'This' de son champ d'application parent.
L'héritage du contexte évoqué ci-dessus est en fait une caractéristique très utile de la fonction arrow, car elle permet d'éviter de gérer une valeur 'This' inattendue dans les rappels et de réduire l'utilisation des phrases 'bind()' ou 'self = this'.
Ce qu'il faut retenir, c'est que
- Dans une fonction fléchée, le contexte 'This' n'est pas influencé par la manière et l'endroit où elle est appelée, mais seulement par la portée qu'elle contient.
- Une nouvelle fonction fléchée autonome ne peut pas lier 'This' ; elle reste dans l'état du contexte qui l'entoure.
Par conséquent, tu dois garder à l'esprit que si tu essaies d'appliquer '.call()', '.apply()', '.bind()' à une fonction Arrow et de passer un nouveau contexte 'This', cela ne fonctionnera tout simplement pas.
let speed = function () { return this.isFast ? 'fast' : 'slow' ; } ; console.log(speed.call({isFast : true})) ; // imprime 'fast'.
Dans cet exemple, 'This' à l'intérieur de la fonction speed fait référence à l'objet passé en utilisant call. Cependant, si speed est une fonction fléchée, il se passera ce qui suit :
let speed = () => this.isFast ? 'fast' : 'slow' ; console.log(speed.call({isFast : true})) ; // ReferenceError : isFast n'est pas défini.
Ici, 'This' à l'intérieur de la fonction speed reste à sa portée lexicale et n'est pas influencé par la méthode call, ce qui entraîne un message d'erreur car 'isFast' n'est pas défini dans le contexte global.
Comprendre la dynamique des fonctions fléchées et du mot-clé This
Voici une exploration détaillée de la façon dont 'This' se comporte différemment dans les fonctions Arrow par rapport aux expressions de fonctions régulières dans divers scénarios :
- Portée globale - Dans les fonctions Arrow comme dans les fonctions normales, "Ceci" au niveau global pointe vers l'objet Fenêtre.
- Méthode de l'objet - "Ceci" dans une fonction standard à l'intérieur d'un objet pointe vers cet objet. Cependant, dans une fonction Arrow incluse dans un objet, "Ceci" pointe vers l'objet fenêtre/global.
- Écoute d'événements - Dans une écoute d'événements, "Ceci" dans une fonction normale fait référence à l'objet auquel l'événement est appliqué. En revanche, "Ceci" dans une fonction Flèche au sein d'un écouteur d'événements renvoie à l'objet Fenêtre.
- Fonctions de construction - C'est ici que les choses divergent de manière significative. Tu ne peux pas créer de constructeur à l'aide d'une fonction Arrow parce qu'elles ne peuvent pas être utilisées avec "new". Elles n'ont pas non plus la propriété de prototype, ce qui nous amène au fait qu'elles ne peuvent pas gérer des caractéristiques de la programmation orientée objet telles que "super" ou "new.target".
En conclusion, si les fonctions Arrow offrent une syntaxe plus concise et corrigent certaines bizarreries de JavaScript, elles présentent également des caractéristiques distinctes en ce qui concerne le mot-clé "This", dont tu dois tenir compte lors de la conception de tes applications JavaScript.
Le mot-clé "This" dans les classes Javascript
Se familiariser avec le mot-clé "This" peut changer la donne lorsque l'on travaille avec des classes en JavaScript. Il s'agit d'un mot-clé spécial qui représente le contexte dans lequel le code actuel s'exécute. Par exemple, il peut représenter un objet qui a invoqué la méthode actuelle ou une nouvelle instance d'une classe, entre autres choses.
Le lien entre le mot-clé This et les classes JavaScript
Dans les classes JavaScript, le mot-clé This est fondamentalement utilisé pour accéder aux propriétés d'une instance de la classe et les manipuler dans le cadre des méthodes de la classe. En d'autres termes, il représente une instance de la classe où il est actuellement utilisé.
Ce mot permet aux méthodes de classe de faire référence à l'objet pour lequel la méthode est appelée, même s'il est inconnu au moment de la définition de la classe ou de la méthode. This est automatiquement défini lorsqu'une nouvelle instance de la classe est créée et qu'une méthode est appelée sur cette instance.
En général, lorsqu'on utilise la classe pour créer des objets, on attribue à 'This' le nouvel objet créé. En utilisant le mot-clé 'This', tu peux définir ou modifier les propriétés de l'objet, ainsi qu'y accéder pour effectuer des calculs ou des traitements.
Pour illustrer notre propos, prenons une simple classe "Personne" :
class Person { constructor(name, age) { this.name = name ; this.age = age ; } greet() { console.log(`Bonjour, mon nom est ${nom.name}.`) ; } }
Dans la classe Personne, la fonction constructeur attribue les arguments nom et âge au mot-clé 'This' afin que ces propriétés soient définies sur les objets créés à partir de la classe Personne. Dans les méthodes de classe, 'This' fait référence à l'instance sur laquelle la méthode a été appelée.
Dans la méthode greet, "This" est à nouveau utilisé, cette fois pour faire référence au nom de l'objet personne qui est salué. Ainsi, si nous créons une nouvelle personne et appelons la méthode greet :
let john = new Person('John', 25) ; john.greet() ; // imprime 'Bonjour, je m'appelle John.'
Le mot clé 'This' fait référence à l'instance 'john' de la classe 'Person' et récupère la propriété 'name' de 'john'.
Exemples d'utilisation du mot-clé This dans les classes Javascript
Voici quelques exemples plus concrets de l'utilisation du mot-clé "This" dans les classes JavaScript :
class Car { constructor(brand) { this.carName = brand ; } present() { return 'I have a ' + this.carName ; } } let myCar = new Car("Ford") ; console.log(myCar.present()) ; // imprime 'I have a Ford'
class Animal { constructor(type, name) { this.type = type ; this.name = name ; } introduce() { console.log(`Bonjour, je suis un ${this.type} et mon nom est ${this.name}.`) ; } } let myPet = new Animal('Dog', 'Bruno') ; myPet.introduce() ; // imprime 'Bonjour, je suis un chien et je m'appelle Bruno.'
Dans les deux exemples, le mot-clé "This" est utilisé dans les méthodes de la classe pour référencer les propriétés des instances de la classe (myCar et myPet). Les méthodes manipulent ensuite les propriétés référencées pour effectuer un calcul ; dans ce cas, il s'agit de générer un message descriptif.
Lorsqu'on travaille avec des classes JavaScript, il est absolument essentiel de comprendre et de maîtriser le mot-clé "This". Cependant, la compréhension de "This" ne s'arrête pas aux classes. Elle est utile lorsqu'il s'agit de fonctions ordinaires, de gestionnaires d'événements et même de méthodes de tableaux. Il offre un moyen plus souple et plus efficace d'accéder aux propriétés et aux méthodes des objets, améliorant ainsi le potentiel de ton code.
Examen des exemples et de la syntaxe du mot-clé This en JavaScript
Le mot-clé "This" en JavaScript possède une valeur critique dans le domaine de la programmation orientée objet. Il permet aux méthodes d'accéder aux objets qui les ont invoquées, ce qui accroît l'efficacité et la lisibilité du code. Examinons le mot-clé "This" plus en détail, en explorant les exemples les plus courants et en comprenant sa syntaxe.
Exemples populaires d'utilisation du mot-clé This en Javascript
Le mot-clé "This" est principalement utilisé pour accéder aux propriétés d'un objet dans sa méthode. Lorsque 'This' est utilisé à l'intérieur d'une méthode d'objet, il fait référence au 'propriétaire' de la méthode.
Pour illustrer ceci, considérons un objet représentant une personne, avec les propriétés 'firstName' et 'lastName' et une méthode 'fullName' qui combine ces propriétés :
let person = { firstName : "John", lastName : "Doe", fullName : function() { return this.firstName + " " + this.lastName ; } }
Dans l'exemple ci-dessus, 'This' à l'intérieur de la fonction 'fullName' fait référence à l'objet 'person'. Elle accède aux propriétés 'firstName' et 'lastName' de l'objet 'person' et les concatène pour générer une chaîne de caractères représentant le nom complet.
En outre, le mot-clé 'This' peut être utilisé avec le mot-clé new pour créer de nouveaux objets :
function Person(first, last) { this.firstName = first ; this.lastName = last ; } let myFather = new Person("John", "Doe") ;
Dans ce cas, "This" fait référence à l'objet nouvellement créé. Ainsi, lorsque la fonction 'Personne' est invoquée avec 'new', le 'This' à l'intérieur de 'Personne' est lié à l'objet nouvellement créé. Par conséquent, 'monPère' devient une instance de 'Personne' avec les propriétés 'premier' et 'dernier'.
Comprendre la syntaxe du mot-clé This en Javascript
Le mot-clé 'This' n'est pas déclaré. Il est automatiquement défini par l'environnement d'exécution JavaScript et est accessible dans toutes les fonctions (bien que son comportement dans les fonctions fléchées diffère de celui des fonctions standard). La syntaxe est aussi simple que de l'invoquer en utilisant "this" dans ton code.
Tu peux accéder à la propriété d'un objet en utilisant le mot-clé "this" suivi d'un point (.) et du nom de la propriété :
let dog = { name : "Max", getDescription : function() { return "Le nom du chien est " + this.name ; } } ;
Utilisation des méthodes Call et Apply avec le mot-clé This en Javascript
'call' et 'apply' sont des méthodes JavaScript prédéfinies qui te permettent fondamentalement d'écrire une méthode qui peut être utilisée sur différents objets, sans avoir besoin d'écrire la méthode entière pour chaque objet individuellement.
Ces fonctions peuvent être utilisées pour définir explicitement la valeur de 'This' et appeler une fonction avec un objet propriétaire comme argument (paramètre).
Voici quelques utilisations de base :
let person1 = {fullName : function() {return this.firstName + " " + this.lastName}} ; let person2 = {firstName : "John", lastName : "Doe"} ; person1.fullName.call(person2) ; // Retourne "John Doe".
Comprendre la méthode Call en Javascript Ce mot-clé
La méthode call() est une méthode JavaScript prédéfinie. Elle peut être utilisée pour invoquer une fonction avec une valeur 'This' donnée et des arguments fournis explicitement.
Elle prend les arguments comme suit :
call([thisArg[, arg1, arg2, ...argN]] )
Le 'thisArg' est un argument qui remplacera 'This' à l'intérieur de la fonction appelée, tandis que 'arg1, arg2, ...argN' seront des arguments pour la fonction en cours d'exécution.
Voici un exemple :
function Product(name, price) { this.name = name ; this.price = price ; } function Toy(name, price) { Product.call(this, name, price) ; this.category = 'toy' ; } let jumper = new Toy('jumper', 29.99) ; console.log(jumper) ; // Outputs : {nom : "jumper", prix : 29,99, catégorie : "jouet"}
Application de la méthode Apply avec le mot-clé Javascript This
La méthode apply() est assez similaire à call(), à la différence notable que apply() accepte un seul tableau d'arguments, contrairement à call() qui prend une liste d'arguments.
Cette méthode appelle une fonction avec une valeur 'This' donnée, et des arguments fournis sous forme de tableau (ou d'un objet de type tableau).
Voici sa syntaxe générale :
apply([thisArg[, argsArray]] )
Voici un exemple :
let numbers = [5, 6, 2, 3, 7] ; let max = Math.max.apply(null, numbers) ; console.log(max) ; // Résultats : 7
Dans cet exemple, apply() est utilisé avec le mot-clé 'This' fixé à null et le tableau 'numbers' comme arguments pour trouver le nombre maximum dans le tableau 'numbers'.
Mot-clé This en JavaScript - Principaux enseignements
- Le mot-clé 'This' en JavaScript fait référence à l'objet auquel il appartient.
- Dans la portée globale, 'this' fait référence à l'objet global, dans une fonction faisant partie d'un objet, 'this' fait référence à l'objet. En "mode strict", "this" reste indéfini s'il n'est pas défini.
- Les principales applications du mot-clé 'this' se trouvent dans les constructeurs d'objets, les méthodes de prototypes et les méthodes d'objets.
- Le mot-clé "This" capture le contexte de leur portée parentale dans les fonctions fléchées ES6, contrairement aux fonctions JavaScript normales.
- Dans les classes JavaScript, le mot-clé "This" est utilisé pour accéder aux propriétés d'une instance de la classe dans les méthodes de la classe.
Apprends plus vite avec les 15 fiches sur Mot Clef This en Javascript
Inscris-toi gratuitement pour accéder à toutes nos fiches.
Questions fréquemment posées en Mot Clef This en Javascript
À propos de StudySmarter
StudySmarter est une entreprise de technologie éducative mondialement reconnue, offrant une plateforme d'apprentissage holistique conçue pour les étudiants de tous âges et de tous niveaux éducatifs. Notre plateforme fournit un soutien à l'apprentissage pour une large gamme de sujets, y compris les STEM, les sciences sociales et les langues, et aide également les étudiants à réussir divers tests et examens dans le monde entier, tels que le GCSE, le A Level, le SAT, l'ACT, l'Abitur, et plus encore. Nous proposons une bibliothèque étendue de matériels d'apprentissage, y compris des flashcards interactives, des solutions de manuels scolaires complètes et des explications détaillées. La technologie de pointe et les outils que nous fournissons aident les étudiants à créer leurs propres matériels d'apprentissage. Le contenu de StudySmarter est non seulement vérifié par des experts, mais également régulièrement mis à jour pour garantir l'exactitude et la pertinence.
En savoir plus