首页 > 解决方案 > 当来自不同来源(脚本或模块)的 JS 代码必须共享同一个 Realm 对象时?

问题描述

ECMAScript realm对象定义为在评估之前必须与 JS 代码相关联的对象。它保存对全局对象和全局环境的引用。此类规范实体作为Module RecordScript Record引用它realm,因此它们的代码将与 this 一起运行realm

如果我们有几个模块(Module Records)的依赖图,它们必须都存储同一个realm对象吗?由于这些模块必须共享一个全局环境,因此应该如此,但我无法从规范中得出具体的规则。

有以下说明

全局环境记录用于表示由在公共领域中处理的所有 ECMAScript 脚本元素共享的最外层范围。

尽管它将“共同领域”限制为Script元素(出于对我来说奥秘的原因)。

所以我的最后一个问题是,来自不同来源的 JS 代码必须在什么条件下使用同一个realm对象执行(然后所有这些代码共享相同的全局环境),相反,什么时候 JS 代码有资格创建自己的realm?(这个答案告诉其中一种情况是<iframe>)。

标签: javascriptecma

解决方案


推荐阅读