模块范围的名称是什么?如何引用这个范围?
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访问的环境记录,你只能用它来声明变量。
有一个对象包含模块的所有 export
ed 名称(您可以通过命名空间 import * as … from …
获得),但这似乎不是您想要的.
我认为您的问题的另一种表达方式可能是:“如何使用字符串访问作用域变量?”,答案是“在 JavaScript 中不可能”。
如果您的值确实需要这种动态灵活性,则必须将它们全部分配给一个顶级对象(并且如果您想在模块之外访问它及其值,则必须从您的模块中导出该对象模块)。或者使用 eval
,如果您的环境支持的话。
我们在 javascript 中有一个全局对象,我们可以使用 window
引用它来访问任何全局变量。但是如何引用存储该模块中所有变量的模块范围对象?
实际上,我需要使用字符串引用模块中的导入对象。如果它是一个全局变量,我可以简单地这样做,
let object_I_want = window[string];
但是对于模块,我找不到此类对象的引用。我也尝试使用 this
,
var scope = this;
somefunction(){
let object_I_want = scope[string];
}
但是,根据规范,this
在模块上下文中未定义。有没有办法像 window
.
没有这样的模块对象。模块作用域就像一个函数作用域——一个你无法从javascript访问的环境记录,你只能用它来声明变量。
有一个对象包含模块的所有 export
ed 名称(您可以通过命名空间 import * as … from …
获得),但这似乎不是您想要的.
我认为您的问题的另一种表达方式可能是:“如何使用字符串访问作用域变量?”,答案是“在 JavaScript 中不可能”。
如果您的值确实需要这种动态灵活性,则必须将它们全部分配给一个顶级对象(并且如果您想在模块之外访问它及其值,则必须从您的模块中导出该对象模块)。或者使用 eval
,如果您的环境支持的话。