aboutsummaryrefslogtreecommitdiff
path: root/files/de/web/javascript/reference/global_objects/globalthis/index.html
blob: c577dafc49fc0e897522ecc37d8621593cf80238 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
---
title: globalThis
slug: Web/JavaScript/Reference/Global_Objects/globalThis
tags:
  - JavaScript
  - Property
  - Reference
  - global
  - globalThis
  - this
translation_of: Web/JavaScript/Reference/Global_Objects/globalThis
---
<div>{{jsSidebar("Objects")}}</div>

<p><span class="tlid-translation translation" lang="de"><span title="">Die Eigenschaft </span></span><span class="seoSummary"><code><strong>globalThis</strong></code></span><span class="tlid-translation translation" lang="de"><span title=""> gibt das globale Objekt der obersten Ebene zurück.</span></span></p>

<div>{{EmbedInteractiveExample("pages/js/globalprops-globalthis.html","shorter")}}</div>



<p>{{JS_Property_Attributes(1, 0, 1)}}</p>

<h2 id="Beschreibung">Beschreibung</h2>

<p><span class="tlid-translation translation" lang="de">In der Vergangenheit war für den Zugriff auf das globale Objekt in verschiedenen JavaScript-Umgebungen eine unterschiedliche Syntax erforderlich. Im Web kann man {{domxref("Window.window", "window")}}, {{domxref("Window.self", "self")}} oder {{domxref("Window.frames", "frames")}} verwenden - aber in </span><a href="/en-US/docs/Web/API/Worker">Web Workers</a><span class="tlid-translation translation" lang="de"> funktioniert nur <code>self</code>. In Node.js funktioniert keines der aufgezählten, und es muss stattdessen <code>global</code> verwendet werden.</span></p>

<p><span class="tlid-translation translation" lang="de">Das Schlüsselwort <code>this</code> kann in Funktionen verwendet werden, die nicht im Strict-Mode ausgeführt werden, ist jedoch in Modulen und in Funktionen, die im Strict-Mode ausgeführt werden, <code>undefined</code>. Es kann <code>Function('return this')()</code> verwendet werden, aber Umgebungen, die {{jsxref("eval", "eval()")}} deaktiviert haben, wie etwa durch {{Glossary("CSP")}} in Browsern, verhindern die Verwendung von {{jsxref("Function")}} auf diese Weise.<br>
 <br>
 Die Eigenschaft <code>globalThis</code> bietet eine Standardmethode für den Zugriff auf den globalen Wert <code>this</code> (und damit auf das globale Objekt selbst) in verschiedenen Umgebungen. Im Gegensatz zu ähnlichen Eigenschaften wie <code>window</code> und <code>self</code> funktioniert es garantiert in Fenster- und Nicht-Fenster-Kontexten. Auf diese Weise können Sie auf konsistente Weise auf das globale Objekt zugreifen, ohne wissen zu müssen, in welcher Umgebung der Code ausgeführt wird. Um sich den Namen zu merken, denken Sie daran, dass <code>this</code> im globalen Bereich <code>globalThis</code> ist.</span></p>

<h3 id="HTML_und_WindowProxy">HTML und WindowProxy</h3>

<p><span class="tlid-translation translation" lang="de"><span title="">In vielen Engines ist <code>globalThis</code> ein Verweis auf das tatsächliche globale Objekt. In Webbrowsern wird jedoch aus Gründen der iframe- und fensterübergreifenden Sicherheit ein {{jsxref("Proxy")}} um das tatsächliche globale Objekt (das nicht direkt verwendet werden kann</span><span title="">).</span> <span title="">Diese Unterscheidung ist im allgemeinen Sprachgebrauch selten relevant, aber wichtig zu beachten.</span></span></p>

<h3 id="Benennung">Benennung</h3>

<p>Mehrere andere populäre Namen wie <code>self</code> und <code>global</code> wurden aus dem Vorschlag entfernt, da sie die Kompatibilität mit existierendem Code potenziell brechen könnten. Siehe das Dokument <a href="https://github.com/tc39/proposal-global/blob/master/NAMING.md">"Naming Constraints"</a> für weitere Details.</p>

<h2 id="Beispiele">Beispiele</h2>

<h3 id="Umgebungsübergreifend_den_globalen_Kontext_finden">Umgebungsübergreifend den globalen Kontext finden</h3>

<p><span class="tlid-translation translation" lang="de"><span title="">Vor <code>globalThis</code> war <code>Function('return this')()</code> die einzige zuverlässige, plattformübergreifende Methode, um das globale Objekt für eine Umgebung abzurufen.</span> <span title="">Dies führt jedoch in einigen Einstellungen zu </span></span> <a href="/en-US/docs/Web/HTTP/CSP">CSP </a><span class="tlid-translation translation" lang="de"><span title="">Verstößen. Daher verwendet </span></span> <a href="https://github.com/paulmillr/es6-shim">es6-shim</a><span class="tlid-translation translation" lang="de"><span title=""> eine Prüfung wie diese:</span></span></p>

<pre class="brush: js notranslate">var getGlobal = function () {
  if (typeof self !== 'undefined') { return self; }
  if (typeof window !== 'undefined') { return window; }
  if (typeof global !== 'undefined') { return global; }
  throw new Error('unable to locate global object');
};

var globals = getGlobal();

if (typeof globals.setTimeout !== 'function') {
  // no setTimeout in this environment!
}
</pre>

<p>Mit der Verfügbarkeit von <code>globalThis</code>, ist die zusätzliche umgebungsübergreifende Suche nach dem Global Kontext nicht mehr notwendig:</p>

<pre class="brush: js notranslate">if (typeof globalThis.setTimeout !== 'function') {
  // no setTimeout in this environment!
}</pre>

<h2 id="Spezifikationen">Spezifikationen</h2>

<table class="standard-table">
 <thead>
  <tr>
   <th scope="col">Specification</th>
  </tr>
 </thead>
 <tbody>
  <tr>
   <td>{{SpecName("ESDraft", "#sec-globalthis", "globalThis")}}</td>
  </tr>
 </tbody>
</table>

<h2 id="Browserkompatibilität">Browserkompatibilität</h2>



<p>{{Compat("javascript.builtins.globalThis")}}</p>

<h2 id="Siehe_auch">Siehe auch</h2>

<ul>
 <li>{{jsxref("this")}}</li>
</ul>