提问人:cxw 提问时间:9/3/2018 最后编辑:cxw 更新时间:9/3/2018 访问量:2940
通过 Chrome DevTools API 或面板以编程方式访问 [[Scopes]](闭包变量)?(不在断点处)
Programmatically accessing [[Scopes]] (closure variables) through Chrome DevTools API or panel? (Not at breakpoint)
问:
在 2014 年,JS 代码无法从闭包外部访问闭包内部的变量。从那时起,Chrome 的内部已更改为 use 而不是 .[[Scopes]]
Closure
现在(2018 年)Chrome DevTools 是否可以以编程方式读取?如果是这样,是否有现有的 DevTools 扩展可以这样做?[[Scopes]]
用例:检查使用 RequireJS 加载的 UMD 模块中的变量。我知道我可以使用面板在断点或语句处执行此操作,但即使我不在断点处,我也希望能够这样做。debugger
Scopes
编辑截至 2017 年,无法访问 [[FunctionLocation]]
,但我不知道.[[Scopes]]
尝试
我已经调查了以下内容但没有成功(模块工厂函数名称):main
- 此注释提到了 ,但无法以编程方式访问 的输出。我可以手动使用然后扩展结果,但不能以编程方式扩展。
console.dir()
console.dir()
console.dir({main})
在 DevTools 控制台中,我可以按此使用。这让我更接近,但不是:
inspect({function})
[[Scopes]]
> var x = inspect({main}) > x.main.name ← "main" > x.main[Symbol('Scopes')] ← undefined > x.main['[[Scopes]]'] ← undefined
chrome.devtools.inspectedWindow API 提供了一个可以使用
inspect
的eval
方法。但是,如上所述,我无法从结果中得到 。inspect
[[Scopes]]
笔记
- 发布一个新问题,而不是像这个 Meta 答案所建议的那样,在 2014 年提出一个问题
- 与这个问题不同,因为我正在尝试访问模块内部而不是公共模块接口
答: 暂无答案
评论
[[FunctionLocation]]
[[Scopes]]