ECMAScript | Области

Перед оценкой весь код ECMAScript должен быть связан с Областью (realm). Концептуально Область состоит из набора внутренних объектов, глобальной среды ECMAScript, всего кода ECMAScript, который загружается в рамках этой глобальной среды, и других связанных состояний и ресурсов.

Область представлена в этой спецификации как Запись Области (Realm Record) с полями, указанными в Таблице 24:

Имя поля Значение Смысл
[[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

Поделись записью