繁体   English   中英

模块范围的名称是什么? 如何引用这个范围?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM