You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何访问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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 00:10:04