Javascript 如何按名称访问ES6模块变量(从模块本身)

Javascript 如何按名称访问ES6模块变量(从模块本身),javascript,ecmascript-6,webpack,Javascript,Ecmascript 6,Webpack,在webpack环境中,我有一个ES6模块,它定义了一个变量: let my_var1 = 0 // other vars follow 在同一个模块中,我有一个用于此变量的setter函数,但我想按如下方式构建它: export const set_var(name, value) => { // set "value" as new value for "name" variable of this module } 我想做的是通过名称引用模块内的变量,因此在外部调用类似于

在webpack环境中,我有一个ES6模块,它定义了一个变量:

let my_var1 = 0
// other vars follow
在同一个模块中,我有一个用于此变量的setter函数,但我想按如下方式构建它:

export const set_var(name, value) => {
    // set "value" as new value for "name" variable of this module
}
我想做的是通过名称引用模块内的变量,因此在外部调用类似于
set\u var('my\u var1',5)


有办法访问“模块”对象吗?类似于窗口对象,但对于模块而言。

不,这是不可能的

您可以通过模块对象按名称访问导出的变量,但不能对其进行设置。

您也无法使用window执行此操作,因为let不创建属性。

您可以改为引用模块中的对象,然后在该对象中设置键的值(也称为
my_var1
)。然后您可以使用getter获取
my_var1

let moduleObject = {
    my_var1: 0,
    my_var2: 5,
    ...
}

export const set_var = (varName, value) => moduleObject[varName] = value
export const get_var = (varName) => moduleObject[varName]

你为什么要这么做?不,这是不可能的。您可以通过模块对象按名称访问导出的变量,但无法对其进行设置。“类似于窗口对象…”您也无法使用
window
访问导出的变量,因为
let
不创建属性。为什么不首先创建一个对象呢?事实上,我移动到了一个对象,跳过了这个问题(这可能也更清楚)。由于ES6模块以只读方式导出,并且我需要存储全局数据,所以我首先尝试了这种方式。请提供简要说明,而不仅仅是发布代码。