模块范围的名称是什么?如何引用这个范围?

What is the name of module scope? How to refer to this scope?

我们在 javascript 中有一个全局对象,我们可以使用 window 引用它来访问任何全局变量。但是如何引用存储该模块中所有变量的模块范围对象?

实际上,我需要使用字符串引用模块中的导入对象。如果它是一个全局变量,我可以简单地这样做,

let object_I_want = window[string];

但是对于模块,我找不到此类对象的引用。我也尝试使用 this,

var scope = this;

somefunction(){
   let object_I_want = scope[string];
}

但是,根据规范,this 在模块上下文中未定义。有没有办法像 window.

一样引用模块 scope/module 对象

没有这样的模块对象。模块作用域就像一个函数作用域——一个你无法从javascript访问的环境记录,你只能用它来声明变量。

有一个对象包含模块的所有 exported 名称(您可以通过命名空间 import * as … from … 获得),但这似乎不是您想要的.

我认为您的问题的另一种表达方式可能是:“如何使用字符串访问作用域变量?”,答案是“在 JavaScript 中不可能”。

如果您的值确实需要这种动态灵活性,则必须将它们全部分配给一个顶级对象(并且如果您想在模块之外访问它及其值,则必须从您的模块中导出该对象模块)。或者使用 eval,如果您的环境支持的话。