[英]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
一样引用模块范围/模块对象。
我认为您的问题的另一种表达方式可能是:“如何使用字符串访问范围变量?”,答案是“在 JavaScript 中不可能”。
如果您确实需要这种值的动态灵活性,则必须将它们全部分配给顶级对象(如果要在模块外访问它及其值,则必须从模块中导出该对象)。 或者,如果您的环境支持,请使用eval
。
模块没有这样的对象。 模块作用域就像一个函数作用域——一个你不能从 javascript 访问的环境记录,你只能用它来声明变量。
有一个对象包含模块的所有export
ed 名称(您可以通过执行 namespace import * as … from …
来获得),但这似乎不是您想要的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.