From 844f5103992238c0c23203286dad16a466e89c97 Mon Sep 17 00:00:00 2001 From: julieng Date: Tue, 3 Aug 2021 08:03:09 +0200 Subject: move *.html to *.md --- .../reference/global_objects/globalthis/index.md | 84 ++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 files/fr/web/javascript/reference/global_objects/globalthis/index.md (limited to 'files/fr/web/javascript/reference/global_objects/globalthis/index.md') diff --git a/files/fr/web/javascript/reference/global_objects/globalthis/index.md b/files/fr/web/javascript/reference/global_objects/globalthis/index.md new file mode 100644 index 0000000000..428d089b96 --- /dev/null +++ b/files/fr/web/javascript/reference/global_objects/globalthis/index.md @@ -0,0 +1,84 @@ +--- +title: globalThis +slug: Web/JavaScript/Reference/Global_Objects/globalThis +tags: + - JavaScript + - Reference + - globalThis +translation_of: Web/JavaScript/Reference/Global_Objects/globalThis +original_slug: Web/JavaScript/Reference/Objets_globaux/globalThis +--- +
{{jsSidebar("Objects")}}
+ +

La propriété globale globalThis renvoie l'objet global de plus haut niveau.

+ +
{{EmbedInteractiveExample("pages/js/globalprops-globalthis.html")}}
+ +

Syntaxe

+ +
globalThis
+
+ +

Description

+ +

Par le passé, il était nécessaire d'utiliser différentes syntaxes pour différents environnements afin d'accéder à la portée globale. Sur le Web, on peut utiliser {{domxref("Window.window", "window")}}, {{domxref("Window.self", "self")}} ou {{domxref("Window.frames", "frames")}} ; pour les web workers, seul self peut être employé ; pour 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 vaudra sinon undefined dans les modules et dans les fonctions utilisant le mode strict.

+ +

La propriété globalThis fournit une méthode standard d'accès à l'objet this global, quel que soit l'environnement. Contrairement aux propriétés window et self, ce mot-clé fonctionnera quel que soit le contexte (que celui-ci soit doté de fenêtres ou non). Ainsi, on peut accéder à l'objet global de façon homogène, quel que soit l'environnement dans lequel le code est utilisé.

+ +

Pour mieux mémoriser ce nom, on se rappellera que la valeur de this dans la portée globale est globalThis.

+ +

Accès indirect à la variable globale dans un contexte web

+ +

Dans la plupart des environnements, globalThis sera une référence directe à l'objet global. Cependant, dans les navigateurs web, avec les principes de sécurité relatifs aux iframes et aux liens entre les fenêtres, globalThis fournira un {{jsxref("Proxy")}} sur l'objet global (auquel on n'aura donc pas accès directement).

+ +

Nommage

+ +

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.

+ +

Exemples

+ +

Avant l'introduction de globalThis, la seule façon qui permettait d'obtenir l'objet global de l'environnement de façon homogène était Function('return this')(). Toutefois, cela enfreignait certaines règles CSP avec certains réglages et es6-shim, par exemple, devait utiliser une logique conditionnelle :

+ +
var getGlobal = function () {
+  if (typeof self !== 'undefined') { return self; }
+  if (typeof window !== 'undefined') { return window; }
+  if (typeof global !== 'undefined') { return global; }
+  throw new Error("impossible de trouver l'objet global");
+};
+
+var globals = getGlobal();
+
+if (typeof globals.setTimeout !== 'function') {
+  // pas de setTimeout pour cet environnement
+}
+
+ +

Avec globalThis, il n'est plus nécessaire de parcourir les différents mots-clés des différents environnements :

+ +
if (typeof globalThis.setTimeout !== 'function') {
+  // pas de setTimeout pour cet environnement
+}
+ +

Spécifications

+ + + + + + + + + + + + + + + + +
SpécificationÉtatCommentaires
Proposition pour globalThisProposition de niveau 3 (stage 3)
+ +

Compatibilité des navigateurs

+ +

{{Compat("javascript.builtins.globalThis")}}

-- cgit v1.2.3-54-g00ecf