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

时间:2016-04-04 10:21:51

标签: 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
}

我想要做的是在模块中按名称引用变量,因此外部调用类似set_var('my_var1', 5)

的内容

有一种方法可以访问"模块"宾语?像窗口对象,但对于模块。

2 个答案:

答案 0 :(得分:0)

不,这是不可能的。

您可以通过模块对象按名称访问导出的变量,但不能设置它们 你不能用窗口做到这一点,因为let不会创建属性。

答案 1 :(得分:0)

您可以改为引用模块中的对象,然后在该对象中设置键的值(又名my_var1)。然后你可以用吸气剂让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]