Перевод статьи Global object (1-js/06-advanced-functions/05-global-object/)#240
Conversation
|
|
||
| // the same as | ||
| window.alert("Hello"); | ||
| // тоже самое что и |
|
Please make the requested changes. After it, add a comment "/done". |
|
/done |
|
Please make the requested changes. After it, add a comment "/done". |
|
Хорошо. |
|
Да, спасибо. Сорри, но новый вариант будет точно лучше. |
|
Согласен — новый вариант хорош! |
|
/done |
|
@vmasterov не затрудит сделать git pull upstream, а поверх него накатить ваш перевод? А то один сплошной конфликт. Команды гита подсказать? |
|
@iliakan , посмотрите, пожалуйста. Вроде, всё правильно накатилось. |
iliakan
left a comment
There was a problem hiding this comment.
Спасибо! Пожалуйста, внеси изменения, в основном улучшения изложения.
| В браузере он называется "window", в Node.js — "global", в другой среде исполнения может называться иначе. | ||
|
|
||
| For instance, we can call `alert` as a method of `window`: | ||
| Например, вызовем `alert` как метод `window`: |
There was a problem hiding this comment.
Например, мы можем вызвать alert как метод window:
| ``` | ||
|
|
||
| We can reference other built-in functions like `Array` as `window.Array` and create our own properties on it. | ||
| Мы можем ссылаться на другие встроенные функции, к примеру, `Array` так: `window.Array`. Или создавать свои собственные свойства глобального объекта. |
| ## Браузер: объект "window" | ||
|
|
||
| For historical reasons, in-browser `window` object is a bit messed up. | ||
| По историческим причинам браузерный объект `window` выглядит слегка запутанно. |
There was a problem hiding this comment.
По историческим причинам браузерный объект window играет одновременно две роли.
| Глобальный объект предоставляет переменные и функции, доступные в любом месте программы. В основном те, что встроены в язык или среду исполнения. | ||
|
|
||
| In a browser it is named `window`, for Node.js it is `global`, for other environments it may have another name. | ||
| В браузере он называется "window", в Node.js — "global", в другой среде исполнения может называться иначе. |
There was a problem hiding this comment.
Кавычки мб все же вернуть те, которые для кода?
There was a problem hiding this comment.
Вернул кавычки на место. Я изменил их случайно
| В браузере он называется "window", в Node.js — "global", в другой среде исполнения может называться иначе. | ||
|
|
||
| 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. | ||
| Недавно `globalThis` был добавлен в язык как стандартизированное имя для глобального объекта, которое должно поддерживаться в любом окружении. В некоторых браузерах, с движком отличным от Chromium, `globalThis` ещё не поддерживается, но легко реализуется с помощью полифила. |
There was a problem hiding this comment.
Недавно globalThis был добавлен в язык как стандартизированное имя для глобального объекта, которое должно поддерживаться в любом окружении. В некоторых браузерах, например Edge не на Chromium, globalThis ещё не поддерживается, но легко реализуется с помощью полифила.
| ## Использование полифилов | ||
|
|
||
| We can test the global object for support of modern language features. | ||
| Мы можем проверить, поддерживает ли глобальный объект современные возможности языка. |
There was a problem hiding this comment.
Глобальный объект можно использовать, чтобы проверить поддержку современных возможностей языка.
|
|
||
| That includes JavaScript built-ins, such as `Array` and environment-specific values, such as `window.innerHeight` -- the window height in the browser. | ||
| - The global object has a universal name `globalThis`. | ||
| Это включает в себя как встроенные конструкции, например, `Array`, так и характерные для окружения свойства, например, `window.innerHeight` -- высота окна браузера. |
There was a problem hiding this comment.
Это включает в себя как встроенные объекты, например, `Array`, так и характерные для окружения свойства, например, `window.innerHeight` -- высота окна браузера.
| ...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). | ||
| - We should store values in the global object only if they're truly global for our project. And keep their number at minimum. | ||
| - In-browser, unless we're using [modules](info:modules), a global variable declared with `var` becomes a property of the global object. | ||
| ...Но чаще на него ссылаются по-старому, используя имя, характерное для данного окружения, такое как `window` (браузер) и `global` (Node.js). Так как `globalThis` появился недавно, он не поддерживается браузерами, созданными не на движке Chromium (можно использовать полифил). |
There was a problem hiding this comment.
...Но чаще на него ссылаются по-старому, используя имя, характерное для данного окружения, такое как `window` (браузер) и `global` (Node.js). Так как `globalThis` появился недавно, он не поддерживается в IE и Edge (не-Chromium версия), но можно использовать полифил.
There was a problem hiding this comment.
Илья, здесь сказано, что Opera тоже не поддерживает globalThis. Может быть стоит об этом упомянуть, или это не так важно?
There was a problem hiding this comment.
@vmasterov мы не можем упоминать в учебнике о каждой ошибке в MDN. Opera поддерживает globalThis.
| - In-browser, unless we're using [modules](info:modules), a global variable declared with `var` becomes a property of the global object. | ||
| ...Но чаще на него ссылаются по-старому, используя имя, характерное для данного окружения, такое как `window` (браузер) и `global` (Node.js). Так как `globalThis` появился недавно, он не поддерживается браузерами, созданными не на движке Chromium (можно использовать полифил). | ||
| - Следует хранить значения в глобальном объекте, только если они действительно глобальны для нашего проекта. И стараться свести их количество к минимуму. | ||
| - В браузерах, если только мы не используем [modules](info:modules), глобальные переменные, объявленные с помощью `var`, становятся свойствами глобального объекта. |
There was a problem hiding this comment.
- В браузерах, если только мы не используем модули, глобальные переменные, объявленные с помощью
var, становятся свойствами глобального объекта.
| - В браузерах, если только мы не используем [modules](info:modules), глобальные переменные, объявленные с помощью `var`, становятся свойствами глобального объекта. | ||
|
|
||
| To make the code easier to understand and more future-proof, we should operate directly on the properties of the global object: `window.x = ...` instead of `var x = ...`. | ||
| Для того, чтобы код был проще и в будущем его легче было поддерживать, следует обращаться к свойствам глобального объекта напрямую: `window.x = ...` вместо `var x = ...`. |
There was a problem hiding this comment.
Для того, чтобы код был проще и в будущем его легче было поддерживать, следует обращаться к свойствам глобального объекта напрямую, как `window.x`.
|
Please make the requested changes. After it, add a comment "/done". |
|
/done |
|
🚀 |
Перевод статьи Global object (1-js/06-advanced-functions/05-global-object/)