ECMAScript определяет realm
объект как объект, который должен быть связан с JS. код перед оценкой. Он содержит ссылки на глобальный объект и глобальную среду. Такие объекты спецификации, как Module Record
и Script Record
, ссылаются на его realm
, поэтому их код будет работать с этим realm
.
Если у нас есть граф зависимостей нескольких модулей (Module Record
), должны ли все они хранить один и тот же объект realm
? Так и должно быть, потому что эти модули должны совместно использовать единую глобальную среду, но я не могу вывести конкретное правило из спецификации.
Существует следующая инструкция:
Глобальная запись среды используется для представления самой внешней области, которая является общей для всех элементов сценария ECMAScript, которые обрабатываются в общей области.
хотя это ограничивает общее царство Script
элементами (по загадочным для меня причинам).
Итак, мой последний вопрос: каковы условия, при которых код JS из разных источников должен выполняться с одним и тем же объектом realm
(и тогда весь этот код использует одну и ту же глобальную среду) и, наоборот, когда код JS имеет право создавать свой собственный realm
? (этот ответ говорит о том, что один из случаев - <iframe>
).