← Back to list

Comprendre globalThis dans ECMAScript 2020

L’ECMAScript 2020 (ES11) a introduit de nombreuses fonctionnalités nouvelles pour les développeurs JavaScript. L’une des plus importantes…

Mahaut Latinis · 2024-09-03 06:14 · 0 claps · 3.3 min read
#js #ecmascript #es11 #globalthis #windows
Open on Medium ↗
Wiki topics: 🌐 · Web Development

Comprendre globalThis dans ECMAScript 2020

L’ECMAScript 2020 (ES11) a introduit de nombreuses fonctionnalités nouvelles pour les développeurs JavaScript. L’une des plus importantes est l’objet globalThis, qui vise à unifier et simplifier l'accès à l'objet global, quelle que soit l'environnement d'exécution. Avant d'expliquer globalThis, il est essentiel de comprendre ce qu'est un environnement d'exécution JavaScript et comment il influence le comportement du code.

Qu’est-ce qu’un environnement d’exécution JavaScript ?

Un environnement d’exécution JavaScript est l’environnement dans lequel du code JavaScript est interprété et exécuté. Chaque environnement d’exécution fournit un ensemble de fonctionnalités spécifiques pour interagir avec l’interface utilisateur, manipuler des données, ou gérer des événements, entre autres tâches. Les environnements d’exécution les plus courants sont :

  • Les navigateurs Web : Les environnements d’exécution les plus fréquents, où JavaScript est utilisé pour manipuler le DOM (Document Object Model), gérer les interactions utilisateur, et communiquer avec des serveurs. L’objet global dans ce contexte est window.
  • Node.js : Un environnement d’exécution côté serveur qui permet aux développeurs d’exécuter du JavaScript en dehors des navigateurs. Node.js fournit des fonctionnalités pour gérer des fichiers, interagir avec des bases de données, ou créer des serveurs HTTP. L’objet global dans Node.js est global.
  • Les Web Workers : Des threads distincts qui permettent d’exécuter des scripts JavaScript en arrière-plan, sans bloquer le thread principal utilisé pour l’interface utilisateur. Dans ce contexte, l’objet global est self.
  • Modules ECMAScript : Une manière d’organiser et de charger du code JavaScript en fragments réutilisables. Cependant, dans ce contexte, il n’existait pas de moyen direct pour accéder à l’objet global avant ECMAScript 2020.

Chaque environnement d’exécution a son propre objet global, qui est essentiel pour l’accès aux fonctionnalités globales, comme les fonctions de haut niveau (setTimeout, clearTimeout), les variables globales, ou les objets intégrés (Math, Date, etc.).

L’accès à l’objet global avant ECMAScript 2020

Accéder à l’objet global dans un environnement spécifique variait selon l’environnement d’exécution :

  • Dans les navigateurs Web : L’objet global est window. Les développeurs pouvaient simplement écrire window pour accéder à l'objet global.
  • Dans Node.js : L’objet global est global. Pour y accéder, il fallait utiliser global.
  • Dans les Web Workers : L’objet global est self.
  • Dans les modules ECMAScript : Il n’y avait pas de moyen standard d’accéder à l’objet global, ce qui rendait les choses plus complexes.

Cette fragmentation obligeait les développeurs à écrire du code conditionnel pour s’assurer qu’ils accédaient à l’objet global correct selon l’environnement dans lequel leur code était exécuté. Cela rendait le code plus difficile à maintenir et augmentait le risque d’erreurs.

L’introduction de globalThis

Pour simplifier l’accès à l’objet global, ECMAScript 2020 a introduit globalThis. Cet objet offre une manière standardisée d'accéder à l'objet global, quel que soit l'environnement d'exécution.

globalThis est une référence universelle à l'objet global, applicable dans tous les environnements d'exécution JavaScript. Que vous soyez dans un navigateur, dans Node.js, ou dans un Web Worker, globalThis vous permettra d'accéder à l'objet global de manière uniforme.

Les cas d’usages typiques de globalThis

L’utilisation de globalThis facilite de nombreux scénarios courants dans le développement JavaScript :

  • Développement de bibliothèques cross-environnement : Les développeurs peuvent écrire des bibliothèques fonctionnant de manière identique dans différents environnements d’exécution JavaScript sans se soucier des variations spécifiques de chaque environnement.
// Avant globalThis
var global = (typeof window !== 'undefined') ? window :
             (typeof global !== 'undefined') ? global :
             (typeof self !== 'undefined') ? self : this;

// Avec globalThis
var global = globalThis;
  • Ajout de propriétés ou de fonctions globales : Vous pouvez ajouter des fonctions ou des variables globales dans n’importe quel environnement, sans vous soucier du contexte.
globalThis.myGlobalFunction = function() {
  console.log('This is global!');
};
  • Compatibilité et portabilité : Lors de l’écriture de modules ou de scripts destinés à être utilisés à la fois dans Node.js et dans le navigateur, globalThis garantit que votre code reste compatible et portable.
  • Test de code universel : Les frameworks de tests, qui doivent fonctionner dans plusieurs environnements, peuvent tirer parti de globalThis pour réduire les spécificités de chaque environnement dans leur code.

Conclusion

L’objet globalThis est une addition précieuse au langage JavaScript dans ECMAScript 2020, qui simplifie considérablement l'accès à l'objet global dans divers environnements d'exécution. Il offre une manière standardisée et universelle d'interagir avec l'objet global, réduisant ainsi la complexité du code et améliorant la compatibilité multi-plateforme.

Grâce à globalThis, les développeurs peuvent désormais écrire du code plus propre, plus maintenable et plus robuste, tout en s'assurant que ce code fonctionnera correctement quel que soit l'environnement d'exécution. Que vous développiez des applications web complexes, des bibliothèques JavaScript, ou que vous travailliez sur des projets Node.js, globalThis est un outil essentiel à intégrer dans votre boîte à outils JavaScript.

En adoptant globalThis, vous vous assurez non seulement de rester à jour avec les dernières avancées du langage, mais aussi de réduire les risques d'erreurs et de conflits dans vos projets, en vous concentrant davantage sur la logique métier que sur les détails d'implémentation spécifiques à chaque environnement.


메타데이터
post_id
500f7e581beb
slug
comprendre-globalthis-dans-ecmascript-2020-500f7e581beb
url
https://medium.com/@mahautlatinis/comprendre-globalthis-dans-ecmascript-2020-500f7e581beb
canonical_url
https://medium.com/@mahautlatinis/comprendre-globalthis-dans-ecmascript-2020-500f7e581beb
author_url
https://medium.com/@mahautlatinis
status
ok
fetched_at
2026-07-22 23:12:30