|
1 | 1 |
|
2 |
| -# Global object |
| 2 | +# Globales Objekt |
3 | 3 |
|
4 |
| -The global object provides variables and functions that are available anywhere. By default, those that are built into the language or the environment. |
| 4 | +Das globale Objekt stellt Variablen und Funktionen bereit, die überall verfügbar sind. Standardmäßig diejenigen, die in die Sprache oder die Umgebung integriert sind. |
5 | 5 |
|
6 |
| -In a browser it is named `window`, for Node.js it is `global`, for other environments it may have another name. |
| 6 | +In einem Browser heißt es `window`, für Node.js ist es `global`, für andere Umgebungen kann es einen anderen Namen haben. |
7 | 7 |
|
8 |
| -Recently, `globalThis` was added to the language, as a standardized 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 | +Vor kurzem wurde der Sprache `globalThis` als standardisierter Name für ein globales Objekt hinzugefügt, das in allen Umgebungen unterstützt werden soll. In einigen Browsern, insbesondere Nicht-Chromium Edge, wird `globalThis` noch nicht unterstützt, kann aber leicht mit Polyfills umgangen werden. |
9 | 9 |
|
10 |
| -We'll use `window` here, assuming that our environment is a browser. If your script may run in other environments, it's better to use `globalThis` instead. |
| 10 | +Wir verwenden hier `window`, vorausgesetzt, unsere Umgebung ist ein Browser. Wenn dein Skript in anderen Umgebungen ausgeführt werden kann, ist es besser, stattdessen `globalThis` zu verwenden. |
11 | 11 |
|
12 |
| -All properties of the global object can be accessed directly: |
| 12 | +Auf alle Eigenschaften des globalen Objekts kann direkt zugegriffen werden: |
13 | 13 |
|
14 | 14 | ```js run
|
15 |
| -alert("Hello"); |
16 |
| -// is the same as |
17 |
| -window.alert("Hello"); |
| 15 | +alert("Hallo"); |
| 16 | +// ist das selbe wie |
| 17 | +window.alert("Halllo"); |
18 | 18 | ```
|
19 | 19 |
|
20 |
| -In a browser, global functions and variables declared with `var` (not `let/const`!) become the property of the global object: |
| 20 | +In einem Browser werden mit `var` (nicht `let/const`!) deklarierte globale Funktionen und Variablen Eigentum des globalen Objekts: |
21 | 21 |
|
22 | 22 | ```js run untrusted refresh
|
23 | 23 | var gVar = 5;
|
24 | 24 |
|
25 |
| -alert(window.gVar); // 5 (became a property of the global object) |
| 25 | +alert(window.gVar); // 5 (wurde Eigentum des globalen Objekts) |
26 | 26 | ```
|
27 | 27 |
|
28 |
| -Please don't rely on that! This behavior exists for compatibility reasons. Modern scripts use [JavaScript modules](info:modules) where such thing doesn't happen. |
| 28 | +Bitte nicht darauf verlassen! Dieses Verhalten existiert aus Kompatibilitätsgründen. Moderne Skripte verwenden [JavaScript-Module](info:modules), wo so etwas nicht passiert. |
29 | 29 |
|
30 |
| -If we used `let` instead, such thing wouldn't happen: |
| 30 | +Wenn wir stattdessen `let` verwenden, würde so etwas nicht passieren: |
31 | 31 |
|
32 | 32 | ```js run untrusted refresh
|
33 | 33 | let gLet = 5;
|
34 | 34 |
|
35 |
| -alert(window.gLet); // undefined (doesn't become a property of the global object) |
| 35 | +alert(window.gLet); // undefined (wird nicht Eigentum des globalen Objekts) |
36 | 36 | ```
|
37 | 37 |
|
38 |
| -If a value is so important that you'd like to make it available globally, write it directly as a property: |
| 38 | +Wenn ein Wert so wichtig ist, dass du ihn global verfügbar machen möchtest, schreibe ihn direkt als Eigenschaft: |
39 | 39 |
|
40 | 40 | ```js run
|
41 | 41 | *!*
|
42 |
| -// make current user information global, to let all scripts access it |
| 42 | +// aktuelle Benutzerinformationen global machen, damit alle Skripte darauf zugreifen können |
43 | 43 | window.currentUser = {
|
44 | 44 | name: "John"
|
45 | 45 | };
|
46 | 46 | */!*
|
47 | 47 |
|
48 |
| -// somewhere else in code |
| 48 | +// woanders im Code |
49 | 49 | alert(currentUser.name); // John
|
50 | 50 |
|
51 |
| -// or, if we have a local variable with the name "currentUser" |
52 |
| -// get it from window explicitly (safe!) |
| 51 | +// oder, wenn wir eine lokale Variable mit dem Namen "currentUser" haben |
| 52 | +// Holen Sie es explizit aus dem Fenster (sicher!) |
53 | 53 | alert(window.currentUser.name); // John
|
54 | 54 | ```
|
55 | 55 |
|
56 |
| -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 than if it uses outer or global variables. |
| 56 | +Von der Verwendung globaler Variablen wird jedoch im Allgemeinen abgeraten. Es sollten möglichst wenige globale Variablen vorhanden sein. Der Codeentwurf, bei dem eine Funktion "Eingabe"-Variablen erhält und bestimmte "Ergebnisse" erzeugt, ist klarer, weniger fehleranfällig und einfacher zu testen, als wenn du äußere oder globale Variablen verwendest. |
57 | 57 |
|
58 |
| -## Using for polyfills |
| 58 | +## Verwendung für Polyfills |
59 | 59 |
|
60 |
| -We use the global object to test for support of modern language features. |
| 60 | +Wir verwenden das globale Objekt, um die Unterstützung moderner Sprachfunktionen zu testen. |
61 | 61 |
|
62 |
| -For instance, test if a built-in `Promise` object exists (it doesn't in really old browsers): |
| 62 | +Testen Sie zum Beispiel, ob ein eingebautes `Promise`-Objekt existiert (in wirklich alten Browsern nicht): |
63 | 63 | ```js run
|
64 | 64 | if (!window.Promise) {
|
65 |
| - alert("Your browser is really old!"); |
| 65 | + alert("Dein Browser ist wirklich alt!"); |
66 | 66 | }
|
67 | 67 | ```
|
68 | 68 |
|
69 |
| -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. |
| 69 | +Wenn es keine gibt (sagen wir, wir befinden uns in einem alten Browser), können wir "Polyfills" erstellen: Funktionen hinzufügen, die von der Umgebung nicht unterstützt werden, aber im modernen Standard vorhanden sind. |
70 | 70 |
|
71 | 71 | ```js run
|
72 | 72 | if (!window.Promise) {
|
73 |
| - window.Promise = ... // custom implementation of the modern language feature |
| 73 | + window.Promise = ... // benutzerdefinierte Implementierung der modernen Sprachfunktion |
74 | 74 | }
|
75 | 75 | ```
|
76 | 76 |
|
77 |
| -## Summary |
| 77 | +## Zusammenfassung |
78 | 78 |
|
79 |
| -- The global object holds variables that should be available everywhere. |
| 79 | +- Das globale Objekt enthält Variablen, die überall verfügbar sein sollten. |
80 | 80 |
|
81 |
| - That includes JavaScript built-ins, such as `Array` and environment-specific values, such as `window.innerHeight` -- the window height in the browser. |
82 |
| -- The global object has a universal name `globalThis`. |
| 81 | + Dazu gehören JavaScript-Einbauten wie "Array" und umgebungsspezifische Werte wie `window.innerHeight` -- die Fensterhöhe im Browser. |
| 82 | +- Das globale Objekt hat einen universellen Namen `globalThis`. |
83 | 83 |
|
84 |
| - ...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). |
85 |
| -- We should store values in the global object only if they're truly global for our project. And keep their number at minimum. |
86 |
| -- In-browser, unless we're using [modules](info:modules), global functions and variables declared with `var` become a property of the global object. |
87 |
| -- To make our code future-proof and easier to understand, we should access properties of the global object directly, as `window.x`. |
| 84 | + ...Aber häufiger wird mit umgebungsspezifischen Namen der "alten Schule" wie `window` (Browser) und `global` (Node.js) bezeichnet. Da `globalThis` ein neuer Vorschlag ist, wird es in Nicht-Chromium Edge nicht unterstützt (kann aber mit Polyfills umgangen werden). |
| 85 | +- Wir sollten Werte im globalen Objekt nur speichern, wenn sie wirklich global für unser Projekt sind. Und halten Sie ihre Anzahl auf ein Minimum. |
| 86 | +- Im Browser werden globale Funktionen und Variablen, die mit `var` deklariert sind, zu einer Eigenschaft des globalen Objekts, es sei denn, wir verwenden [modules](info:modules). |
| 87 | +- Um unseren Code zukunftssicher und verständlicher zu machen, sollten wir direkt auf die Eigenschaften des globalen Objekts zugreifen, als `window.x`. |
0 commit comments