Get to know MDN better
Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis janvier 2020.
La propriété globale globalThis contient la valeur globale de this, qui est généralement similaire à l'objet global.
L'objet global this.
| Écrivable | Oui |
| Énumérable | Non |
| Configurable | Oui |
Note : La propriété globalThis est configurable et modifiable afin que les auteur·ice·s de code puissent la masquer lors de l'exécution de code non fiable et éviter d'exposer l'objet global.
Historiquement, accéder à l'objet global a nécessité différentes syntaxes selon les environnements JavaScript. Sur le Web, vous pouvez utiliser window, self, ou frames — mais dans les Web Workers seul self fonctionne. Dans Node.js aucun de ces mots-clés ne fonctionne et il faut utiliser global. Le mot-clé this pouvait être utilisé à l'intérieur des fonctions en mode non-strict, mais this vaudra undefined dans les modules et dans les fonctions utilisant le mode strict. Vous pouvez aussi utiliser Function('return this')(), mais les environnements qui désactivent eval(), comme CSP dans les navigateurs, empêchent l'utilisation de Function de cette manière.
La propriété globalThis fournit une méthode standard pour accéder à la valeur de this global (et donc à l'objet global lui-même) dans tous les environnements. Contrairement à des propriétés similaires comme window et self, elle fonctionne aussi bien dans les contextes avec ou sans fenêtre. Ainsi, on peut accéder à l'objet global de façon homogène, sans avoir à connaître l'environnement d'exécution du code. Pour mieux mémoriser ce nom, rappelez-vous que dans la portée globale, la valeur de this est globalThis.
Note : globalThis correspond généralement au même concept que l'objet global (c'est-à-dire qu'ajouter des propriétés à globalThis en fait des variables globales) — c'est le cas pour les navigateurs et Node — mais les hôtes peuvent fournir une valeur différente pour globalThis qui n'est pas liée à l'objet global.
Dans de nombreux moteurs, globalThis est une référence à l'objet global réel, mais dans les navigateurs web, en raison des considérations de sécurité liées aux cadres intégrés et aux fenêtres croisées, il référence un Proxy autour de l'objet global réel auquel vous n'avez pas accès directement. Cette distinction est rarement pertinente dans l'usage courant, mais il est important d'en être conscient.
D'autres noms furent proposés pour cette fonctionnalité (tels que self et global) mais ils furent écartés car ils pouvaient entraîner des problèmes de compatibilité avec du code existant. Pour plus de détails, voir le document de la proposition pour le nommage.
Habituellement, il n'est pas nécessaire de préciser explicitement l'objet global — ses propriétés sont automatiquement accessibles comme variables globales.
Cependant, un cas où il faut accéder explicitement à l'objet global est lors de l'écriture sur celui-ci, généralement pour des prothèses d'émulation.
Avant globalThis, la seule façon fiable et multiplateforme d'obtenir l'objet global d'un environnement était Function('return this')(). Cependant, cela provoque des violations de CSP dans certains contextes, donc les auteur·ice·s utilisaient une définition par morceaux comme celle-ci (légèrement adaptée de la source core-js originale (angl.)) :
Après avoir obtenu l'objet global, nous pouvons définir de nouvelles propriétés globales dessus. Par exemple, ajouter une implémentation pour Intl :
Avec la disponibilité de globalThis, la recherche supplémentaire de l'objet global dans les différents environnements n'est plus nécessaire :
| ECMAScript® 2027 Language Specification # sec-globalthis |
Activez JavaScript pour afficher ce tableau de compatibilité des navigateurs.
Cette page a été modifiée le 25 févr. 2026 par les contributeur·ice·s du MDN.
Votre modèle pour un internet meilleur.
Visitez la société mère à but non lucratif de Mozilla Corporation, la Fondation Mozilla.
Certaines parties de ce contenu sont protégées par le droit d'auteur ©1998—2026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.