Skip to content

Commit 3bc868e

Browse files
authored
Merge pull request #27 from tiffanymatthe/master
Global object
2 parents dc98ddc + 3eedbd2 commit 3bc868e

File tree

1 file changed

+32
-30
lines changed
  • 1-js/06-advanced-functions/05-global-object

1 file changed

+32
-30
lines changed
Lines changed: 32 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,86 +1,88 @@
11

2-
# Global object
2+
# L'objet global
33

4-
The global object provides variables and functions that are available anywhere. Mostly, the ones that are built into the language or the environment.
4+
L'objet global fournit des variables et des fonctions qui sont disponibles partout -- surtout ceux qui sont des objets natifs du langage ou de l'environnement.
55

6-
In a browser it is named `window`, for Node.js it is `global`, for other environments it may have another name.
6+
Dans un navigateur, c'est appelé `window`, pour Node.js c'est `global`, et pour les autres environnements, il peut porter un autre nom.
77

8-
Recently, `globalThis` was added to the language, as a standartized name for a global object, that should be supported across all environments. In some browsers, namely non-Chromium Edge, `globalThis` is not yet supported, but can be easily polyfilled.
8+
Récemment, `globalThis` a été ajouté au langage comme un nom standardisé pour l'objet global et devrait être supporté à travers tous les environnements. Dans certains navigateurs, notamment le non-Chromium Edge, `globalThis` n'est pas encore supporté, mais peut facilement être imité avec un polyfill.
99

10-
All properties of the global object can be accessed directly:
10+
Toutes les propriétés de l'objet global peuvent être accédées directement :
1111

1212
```js run
1313
alert("Hello");
1414

15-
// the same as
15+
// même que
1616
window.alert("Hello");
1717
```
1818

19-
In a browser, global functions and variables declared with `var` become the property of the global object:
19+
Dans un navigateur, les fonctions et variables globales déclarées avec `var` deviennent des propriétés de l'objet global :
2020

2121
```js run untrusted refresh
2222
var gVar = 5;
2323

24-
alert(window.gVar); // 5 (became a property of the global object)
24+
alert(window.gVar); // 5 (var est devenue une propriété de l'objet global)
2525
```
2626

27-
Please don't rely on that! This behavior exists for compatibility reasons. Modern scripts use JavaScript modules where such thing doesn't happen. We'll cover them later in the chapter [](info:modules).
27+
S'il vous plaît, ne vous fiez pas à cela! Ce comportement existe pour des raisons de compatibilité. Les scripts modernes utilisent des modules de Javascript où de tels comportments n'existent pas.
2828

29-
Also, more modern variable declarations `let` and `const` do not exhibit such behavior at all:
29+
Nous les couvrons plus tard dans le chapitre concernant les [modules](info:modules).
30+
31+
De plus, les déclarations de variables plus modernes, `let` et `const`, n'affichent pas du tout ce type de comportement:
3032

3133
```js run untrusted refresh
3234
let gLet = 5;
3335

34-
alert(window.gLet); // undefined (doesn't become a property of the global object)
36+
alert(window.gLet); // undefined (ne devient pas une propriété de l'objet global)
3537
```
3638

37-
If a value is so important that you'd like to make it available globally, write it directly as a property:
39+
Si une valeur est si importante que vous voulez qu'elle soit disponible de façon global, écrivez la directement comme une propriété :
3840

3941
```js run
4042
*!*
41-
// make current user information global, to let all scripts access it
43+
// rendre l'information de l'utilisateur actuel globale pour permettre à tous les scripts de l'accéder.
4244
window.currentUser = {
4345
name: "John"
4446
};
4547
*/!*
4648

47-
// somewhere else in code
49+
// ailleurs dans le code
4850
alert(currentUser.name); // John
4951

50-
// or, if we have a local variable with the name "currentUser"
51-
// get it from window explicitly (safe!)
52+
// ou, si nous avons une variable locale avec le nom "currentUser"
53+
// obtenez la de window explicitement (c'est sécuritaire!)
5254
alert(window.currentUser.name); // John
5355
```
5456

55-
That said, using global variables is generally discouraged. There should be as few global variables as possible. The code design where a function gets "input" variables and produces certain "outcome" is clearer, less prone to errors and easier to test.
57+
Cela dit, l'utilisation de variables globales n'est pas généralement encouragée. Il devrait avoir le moins de variables globales que possible. La conception du code où une fonction reçoit des variables de saisies (input) et produit certains résultats est plus claire, moins susceptible aux erreurs et plus facile à tester.
5658

57-
## Using for polyfills
59+
## Utilisation avec les polyfills
5860

59-
We use the global object to test for support of modern language features.
61+
Nous utilisons l'objet global pour tester le support des fonctionnalités du langage moderne.
6062

61-
For instance, test if a built-in `Promise` object exists (it doesn't in really old browsers):
63+
Par exemple, nous pouvons tester si l'objet natif `Promise` existe (il n'existe pas dans les navigateurs très anciens) :
6264
```js run
6365
if (!window.Promise) {
6466
alert("Your browser is really old!");
6567
}
6668
```
6769

68-
If there's none (say, we're in an old browser), we can create "polyfills": add functions that are not supported by the environment, but exist in the modern standard.
70+
S'il n'y en a pas (disons que nous sommes dans un navigateur ancien), nous pouvons créer des "polyfills". Les "polyfills" ajoutent des fonctions qui ne sont pas supportés par l'environnement, mais qui existent dans le standard moderne.
6971

7072
```js run
7173
if (!window.Promise) {
72-
window.Promise = ... // custom implementation of the modern language feature
74+
window.Promise = ... // implémentation personnalisée de la fonctionnalité du langage moderne
7375
}
7476
```
7577

76-
## Summary
78+
## Résumé
7779

78-
- The global object holds variables that should be available everywhere.
80+
- L'objet global contient des variables qui devraient être disponibles partout.
7981

80-
That includes JavaScript built-ins, such as `Array` and environment-specific values, such as `window.innerHeight` -- the window height in the browser.
81-
- The global object has a universal name `globalThis`.
82+
Ceci inclut les objets natifs de Javascript, tels que `Array` et des valeurs spécifiques à l'environnement, comme `window.innerHeight` -- l'hauteur de la fenêtre dans le navigateur.
83+
- L'objet global porte un nom universel `globalThis`.
8284

83-
...But more often is referred by "old-school" environment-specific names, such as `window` (browser) and `global` (Node.js). As `globalThis` is a recent proposal, it's not supported in non-Chromium Edge (but can be polyfilled).
84-
- We should store values in the global object only if they're truly global for our project. And keep their number at minimum.
85-
- In-browser, unless we're using [modules](info:modules), global functions and variables declared with `var` become a property of the global object.
86-
- To make our code future-proof and easier to understand, we should access properties of the global object directly, as `window.x`.
85+
...Mais il est plus souvent appelé par des noms spécifiques à l'environnement de la vieille école, comme `window` (navigateur) et `global` (Node.js). Comme `globalThis` est une proposition récente, il n'est pas supporté dans le non-Chromium Edge (mais peut être imité par un polyfill).
86+
- Nous devons seulement stocker des valeurs dans l'objet global si elles sont réellement globales pour notre projet. Et gardez la quantité de ces valeurs à un minimum.
87+
- Dans les navigateurs, à moins que nous utilisons des [modules](info:modules), les fonctions et variables globales déclarées avec `var` deviennent une propriété de l'objet global.
88+
- Pour que notre code soit à l'épreuve du temps et plus facile à comprendre, nous devons accéder les propriétés de l'objet global directement, en utilisant `window.x`.

0 commit comments

Comments
 (0)