JavaScript Invocation de fonction
Les fonctions JavaScript ont 4 méthodes d'invocation.
La différence entre chaque méthode réside dansthisl'initialisation de
thisMots-clés
D'une manière générale, en JavaScript, this fait référence à l'objet courant lorsque la fonction est exécutée.
![]() |
Notethisest un mot-clé réservé, vous ne pouvez pas modifierthisla valeur de celui-ci. |
|---|
Appel des fonctions JavaScript
Dans les chapitres précédents, nous avons appris à créer des fonctions.
Le code à l'intérieur d'une fonction est exécuté après que la fonction est appelée.
Appel en tant que fonction
Exemple
Essayez-le vous-même »
La fonction ci-dessus n'appartient à aucun objet. Mais en JavaScript, elle est toujours l'objet global par défaut.
En HTML, l'objet global par défaut est la page HTML elle-même, donc la fonction appartient à la page HTML.
L'objet page dans un navigateur est la fenêtre du navigateur (l'objet window). La fonction ci-dessus devient automatiquement une fonction de l'objet window.
myFunction() et window.myFunction() sont identiques :
Exemple
Essayez-le vous-même »
![]() |
C'est une méthode courante pour invoquer des fonctions JavaScript, mais ce n'est pas une bonne pratique de programmation. Les variables, méthodes ou fonctions globales peuvent facilement provoquer des bogues de conflit de noms. |
|---|
Objet global
Lorsqu'une fonction n'est pas invoquée par son propre objet,this, la valeur de this devient l'objet global.
Dans un navigateur web, l'objet global est la fenêtre du navigateur (l'objet window).
Cet exemple renvoiethis. La valeur de this est l'objet window :
Exemple
Essayez-le vous-même »
![]() |
Invoquer une fonction en tant qu'objet global fait dethis, la valeur de this, l'objet global. Utiliser l'objet window comme variable peut facilement faire planter le programme. |
|---|
Invoquer une fonction en tant que méthode
En JavaScript, vous pouvez définir une fonction comme méthode d'un objet.
L'exemple suivant crée un objet (myObject), l'objet possède deux propriétés (firstNameetlastName), et une méthode (fullName):
Exemple
Essayez-le vous-même »
fullNameUne méthode est une fonction. Une fonction appartient à un objet.myObjectest le propriétaire de la fonction.
thisUn objet, qui possède du code JavaScript. Dans l'exemple,thisla valeur de this estmyObjectl'objet.
Testez-le ! ModifiezfullNamela méthode et renvoyezthisla valeur :
Exemple
Essayez-le vous-même »
![]() |
Invoquer une fonction en tant que méthode d'objet fait dethisla valeur de this l'objet lui-même. |
|---|
Invoquer une fonction avec un constructeur
Si l'appel de fonction est précédé dunewmot-clé, alors il invoque un constructeur.
Cela ressemble à la création d'une nouvelle fonction, mais en fait les fonctions JavaScript sont des objets recréés :
Exemple
Essayez-le vous-même »
Une invocation de constructeur crée un nouvel objet. Le nouvel objet hérite des propriétés et des méthodes du constructeur.
![]() |
Dans le constructeur,thisle mot-clé n'a pas de valeur. thisLa valeur de this est créée lorsque l'appel de fonction instancie l'objet (nouvel objet). |
|---|
Appeler une fonction en tant que méthode de fonction
En JavaScript, les fonctions sont des objets. Les fonctions JavaScript ont leurs propres propriétés et méthodes.
call()etapply()sont des méthodes de fonction prédéfinies.
Exemple
Essayez-le vous-même »
Exemple
Essayez-le vous-même »
Les deux méthodes utilisent l'objet lui-même comme premier paramètre. La différence entre les deux réside dans le second paramètre : apply prend un tableau d'arguments, c'est-à-dire que plusieurs arguments sont combinés dans un tableau et transmis, tandis que call les transmet comme arguments de call (à partir du second paramètre).
En mode strict JavaScript, lors de l'appel d'une fonction, le premier paramètre devientthisla valeur de this, même si le paramètre n'est pas un objet.
En mode non strict de JavaScript, si le premier paramètre est null ou undefined, il utilisera à la place l'objet global.
![]() |
Grâce aux méthodes call() ou apply(), vous pouvez définirthisla valeur de this, et l'appeler comme une nouvelle méthode d'un objet existant. |
|---|
