aboutsummaryrefslogtreecommitdiff
path: root/files/uk/web/javascript/reference/global_objects/globalthis/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'files/uk/web/javascript/reference/global_objects/globalthis/index.html')
-rw-r--r--files/uk/web/javascript/reference/global_objects/globalthis/index.html87
1 files changed, 87 insertions, 0 deletions
diff --git a/files/uk/web/javascript/reference/global_objects/globalthis/index.html b/files/uk/web/javascript/reference/global_objects/globalthis/index.html
new file mode 100644
index 0000000000..1ca1578f97
--- /dev/null
+++ b/files/uk/web/javascript/reference/global_objects/globalthis/index.html
@@ -0,0 +1,87 @@
+---
+title: globalThis
+slug: Web/JavaScript/Reference/Global_Objects/globalThis
+translation_of: Web/JavaScript/Reference/Global_Objects/globalThis
+---
+<div>{{jsSidebar("Objects")}}</div>
+
+<p><span class="seoSummary">Глобальна властивість <code><strong>globalThis</strong></code> містить значення глобального <code>this</code>, яке являється глобальним об'єктом.</span></p>
+
+<div>{{EmbedInteractiveExample("pages/js/globalprops-globalthis.html")}}</div>
+
+<p class="hidden">Код для цього інтерактивного приклада зберігається в репозитарії на GitHub. Якщо Ви бажаєте приєднатися до проекту інтерактивних прикладів, будь-ласка зклонуйте <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> та відправте нам "pull request".</p>
+
+<p>{{JS_Property_Attributes(1, 0, 1)}}</p>
+
+<h2 id="Синтакс">Синтакс</h2>
+
+<pre class="syntaxbox">globalThis
+</pre>
+
+<h2 id="Опис">Опис</h2>
+
+<p>Історично, для доступу до глобальних об'єктів використовується різний синтаксис в різних оточеннях JavaScript. В Веб ви можете використовувати {{domxref("Window.window", "window")}}, {{domxref("Window.self", "self")}}, або {{domxref("Window.frames", "frames")}} - але в <a href="/en-US/docs/Web/API/Worker">Веб Воркерах</a> лише <code>self</code> працюватиме. В Node.js нічого з вище-перерахоованого не працюватиме, і ви повинні використовувати <code>global</code>.<br>
+ Ключове слово <code>this</code> ви можете використовувати в середині функцій в не-суворому режимі, інакше <code>this</code> буде <code>undefined</code> в Модулях та в середині функцій в суворому режимі. Ви також можете використовувати <code>Function('return this')()</code>, але середовища, що відключають {{jsxref("eval", "eval()")}}, типу <a href="/en-US/docs/Glossary/CSP">CSP</a> в браузерах, перешкоджають використанню {{jsxref("Function")}} в такому вигляді.</p>
+
+<p>Властивість <code>globalThis</code> надає стандартний метод доступу до глобального значення <code>this</code> (і як наслідок, безпосередньо до глобального об'єкту) не залежно від середовища. Навідміну від подібних властивостей, таких як <code>window</code> та <code>self</code>, воно гарантує роботу в середовищі де є <code>window</code> та де його немає. Таким чином, ви можете отримати доступ до глобального об'єкту навіть не знаючи в якому середовищі працює код. Щоб запам'ятати назву, просто запам'ятайте що в глобальному отчені значення <code>this</code> дорівнює <code>globalThis</code>.</p>
+
+<h3 id="HTML_та_WindowProxy">HTML та WindowProxy</h3>
+
+<p>В різних двіжках об'єкт <code>globalThis</code> буде посиланням до безпосередього глобального об'єкту, але в браузерах, через міркування безпеки в iframe та cross-window взаємодії, він є посиланням до {{jsxref("Proxy")}} навколо фактичного глобалього об'єкту(до якого ви не можете звернутися безпосередньо). Ця відмінність рідко є актуальною для загального використання, але важливо її запам'ятати.</p>
+
+<h3 id="Іменування">Іменування</h3>
+
+<p>Деякі інші популярні варіанти імен, такі як <code>self</code> та <code>global</code> були видалені з розгляду через їх схильність порушити сумістність з існуючим кодом. Детальніше дивіться  <a href="https://github.com/tc39/proposal-global/blob/master/NAMING.md">документ мовних пропозиції</a>.</p>
+
+<h2 id="Приклади">Приклади</h2>
+
+<p>Задовго до <code>globalThis</code>, єдиним надійним крос-платформенним варіантом  отримати глобальний об'єкт для оточення був <code>Function('return this')()</code>. Однак, він був причиною <a href="/en-US/docs/Web/HTTP/CSP">CSP</a> порушень в деяких налаштуваннях, таким чином <a href="https://github.com/paulmillr/es6-shim">es6-shim</a> використовує додаткову перевірку, наприклад:</p>
+
+<pre class="brush: js">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') {
+ // нема setTimeout в даному оточенні!
+}
+</pre>
+
+<p>За допомогою <code>globalThis</code>, додатковий пошук/перевірки для глобального об'єкту не потрібні більше:</p>
+
+<pre class="brush: js">if (typeof globalThis.setTimeout !== 'function') {
+ // нема setTimeout в даному оточенні!
+}</pre>
+
+<h2 id="Специфікації">Специфікації</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">Специфікація</th>
+ <th scope="col">Статус</th>
+ <th scope="col">Коментар</th>
+ </tr>
+ <tr>
+ <td>{{SpecName("ESDraft", "#sec-globalthis", "<code>globalThis</code>")}}</td>
+ <td>{{Spec2("ESDraft")}}</td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Браузерна_Сумістність">Браузерна Сумістність</h2>
+
+<div class="hidden">Таблиця сумістності на цій сторінці згенерована з структурованних данних. Якщо ви бажаєте прийняти участь в формуванні даних, будь-ласка, перевірте <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> та направте нам "pull request".</div>
+
+<p>{{Compat("javascript.builtins.globalThis")}}</p>
+
+<h3 id="Процес_впровадження">Процес впровадження</h3>
+
+<p>Наступна таблиця надає денний статус впровадження для цього нововведення, оскільки  <code>globalThis</code> не отримала крос-браузерну стабільність. Дані згенеровані запуском відносних тестів в<a href="https://github.com/tc39/test262">Test262</a>, стандартного набору JavaScript тестів, в нічній збірці, або останього релізу для кожного браузерного JavaScript "ядра".</p>
+
+<div>{{EmbedTest262ReportResultsTable("globalThis")}}</div>