Когда код JS из разных источников (скрипты или модули) должен использовать один и тот же объект Realm?

ECMAScript определяет realm объект как объект, который должен быть связан с JS. код перед оценкой. Он содержит ссылки на глобальный объект и глобальную среду. Такие объекты спецификации, как Module Record и Script Record, ссылаются на его realm, поэтому их код будет работать с этим realm.

Если у нас есть граф зависимостей нескольких модулей (Module Record), должны ли все они хранить один и тот же объект realm? Так и должно быть, потому что эти модули должны совместно использовать единую глобальную среду, но я не могу вывести конкретное правило из спецификации.

Существует следующая инструкция:

Глобальная запись среды используется для представления самой внешней области, которая является общей для всех элементов сценария ECMAScript, которые обрабатываются в общей области.

хотя это ограничивает общее царство Script элементами (по загадочным для меня причинам).

Итак, мой последний вопрос: каковы условия, при которых код JS из разных источников должен выполняться с одним и тем же объектом realm (и тогда весь этот код использует одну и ту же глобальную среду) и, наоборот, когда код JS имеет право создавать свой собственный realm? (этот ответ говорит о том, что один из случаев - <iframe>).


person Mergasov    schedule 26.04.2021    source источник