Javascript 通过ChromeDevToolsAPI或panel以编程方式访问[[Scopes]](闭包变量)?(不在断点处)
2014年,JS代码从闭包外部访问闭包内部的变量。从那时起,Chrome的内部结构开始使用Javascript 通过ChromeDevToolsAPI或panel以编程方式访问[[Scopes]](闭包变量)?(不在断点处),javascript,google-chrome,closures,google-chrome-devtools,inspect,Javascript,Google Chrome,Closures,Google Chrome Devtools,Inspect,2014年,JS代码从闭包外部访问闭包内部的变量。从那时起,Chrome的内部结构开始使用[[Scopes]]而不是闭包 Chrome开发工具现在(2018年)是否可以通过编程方式读取[[Scopes]]?如果是,是否有现有的DevTools扩展可以这样做 用例:检查使用RequireJS加载的UMD模块内的变量。我知道我可以使用作用域面板执行此操作或调试器语句,但我希望即使在不处于断点时也能够执行此操作 编辑截至2017年,是的,但我不知道[[Scopes]]] 尝试 我调查了以下问题但未成功
[[Scopes]]
而不是闭包
Chrome开发工具现在(2018年)是否可以通过编程方式读取[[Scopes]]
?如果是,是否有现有的DevTools扩展可以这样做
用例:检查使用RequireJS加载的UMD模块内的变量。我知道我可以使用作用域
面板执行此操作或调试器
语句,但我希望即使在不处于断点时也能够执行此操作
编辑截至2017年,是的,但我不知道[[Scopes]]]
尝试
我调查了以下问题但未成功(模块工厂功能名称main
):
- 提到了
,但没有对console.dir()
console.dir()的输出进行编程访问。我可以使用
然后手动展开结果,但不能以编程方式展开console.dir({main})
- 从DevTools控制台,我可以使用
per。这让我更接近了,但不是inspect({function})
:[[Scopes]]
> var x = inspect({main}) > x.main.name ← "main" > x.main[Symbol('Scopes')] ← undefined > x.main['[[Scopes]]'] ← undefined
- API提供了一个可以使用的。但是,如上所述,我无法从
结果中获取inspect
[[Scopes]]]
- 发布新问题,而不是按照
- 不同于,因为我试图访问模块内部,而不是公共模块接口
[[FunctionLocation]]
和[[Scopes]]]
在访问权限方面有什么区别吗?您仍然无法通过编程方式(从页面或控制台中的代码)访问它们。他们更改了显示该内部属性的名称,但这不会改变任何内容。不过,devtools扩展可能可以做到这一点。这就是你想要创造的吗?@cxw确实令人失望。它似乎非常受限,只允许轻松定制,例如获取当前已检查的窗口和将自己的面板添加到devtools视图,但无法访问内部数据结构。似乎您应该将重点放在允许您访问运行时对象以及访问