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

How to access ES6 module variable by name (from the module itself)

本文关键字:模块 访问 ES6 变量 何通过      更新时间:2023-12-18

在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_var('my_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]