Перед оценкой весь код ECMAScript должен быть связан с Областью (realm). Концептуально Область состоит из набора внутренних объектов, глобальной среды ECMAScript, всего кода ECMAScript, который загружается в рамках этой глобальной среды, и других связанных состояний и ресурсов.
Область представлена в этой спецификации как Запись Области (Realm Record) с полями, указанными в Таблице 28:
Имя поля | Значение | Смысл |
---|---|---|
[[Intrinsics]] | Запись, чьи имена полей являются внутренними ключами, а значения — объектами. | Внутренние значения, используемые кодом, связанным с этой областью |
[[GlobalObject]] | Object (Объект) | Глобальный объект для этой области |
[[GlobalEnv]] | Глобальная Запись Среды (global Environment Record) | Глобальная среда для этой области |
[[TemplateMap]] | Список из Записи { [[Site]]: Parse Node, [[Array]]: Object }. | Объекты шаблонов канонизируются отдельно для каждой области с помощью [[TemplateMap]] ее записи области. Каждое значение [[Site]] является узлом синтаксического анализа, который является TemplateLiteral. Связанное значение [[Array]] — это соответствующий объект шаблона, который передается в функцию тега.
Примечание Как только узел синтаксического анализа становится недоступным, соответствующий [[Array]] также становится недоступным, и это будет ненаблюдаемым, если реализация удалит пару из списка [[TemplateMap]]. |
[[HostDefined]] | Любое, значение по умолчанию не определено (является undefined). | Поле, зарезервированное для использования хостами, которым необходимо связать дополнительную информацию с Записью Области. |
Абстрактные операции Областей
- CreateRealm ( )
- CreateIntrinsics ( realmRec )
- SetRealmGlobalObject ( realmRec, globalObj, thisValue )
- SetDefaultGlobalBindings ( realmRec )
Информационные ссылки
Предыдущий раздел — ECMAScript | Записи Среды
Стандарт ECMAScript — Раздел «9.2 Realms» — https://tc39.es/ecma262/#sec-code-realms