如何访问ES6模块上下文?是否存在可行解决方案?
关于ES6模块与全局上下文的替代方案
JavaScript 中可通过window或globalThis对象获取全局上下文(global context),示例如下:
var a = 10; function f(s){console.log(s)} globalThis["f"]("Hallo Welt") console.log(globalThis.a); console.log(globalThis["a"]);
ES6模块内部是否存在类似机制?
当代码以模块形式加载(HTML中需给<script>标签添加type="module"属性)时,顶层的this始终为undefined,这是ES6模块的有意设计。
那有没有替代方案?由于模块上下文是封装的,向模块内部添加定义比污染全局上下文的风险更低。比如可通过以下方式将模块导出内容暴露到全局命名空间:
import * as library from "./library.js" Object.assign(globalThis, library) // 将所有导出内容暴露到全局命名空间
这种方式和命名导入效果一致,只是无需同步定义导入与导出。
但我希望能在模块内部实现类似操作,目前似乎无法做到。
内容的提问来源于stack exchange,提问作者Eckehard
相关产品推荐
相关产品推荐

