Javascript 通过ChromeDevToolsAPI或panel以编程方式访问[[Scopes]](闭包变量)?(不在断点处)

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]]] 尝试 我调查了以下问题但未成功

2014年,JS代码从闭包外部访问闭包内部的变量。从那时起,Chrome的内部结构开始使用
[[Scopes]]
而不是
闭包

Chrome开发工具现在(2018年)是否可以通过编程方式读取
[[Scopes]]
?如果是,是否有现有的DevTools扩展可以这样做

用例:检查使用RequireJS加载的UMD模块内的变量。我知道我可以使用
作用域
面板执行此操作或
调试器
语句,但我希望即使在不处于断点时也能够执行此操作

编辑截至2017年,是的,但我不知道
[[Scopes]]]

尝试 我调查了以下问题但未成功(模块工厂功能名称
main
):

  • 提到了
    console.dir()
    ,但没有对
    console.dir()的输出进行编程访问。我可以使用
    console.dir({main})
    然后手动展开结果,但不能以编程方式展开
  • 从DevTools控制台,我可以使用
    inspect({function})
    per。这让我更接近了,但不是
    [[Scopes]]

    > var x = inspect({main})
    > x.main.name
    ← "main"
    > x.main[Symbol('Scopes')]
    ← undefined
    > x.main['[[Scopes]]']
    ← undefined
    
  • API提供了一个可以使用的。但是,如上所述,我无法从
    inspect
    结果中获取
    [[Scopes]]]

笔记
  • 发布新问题,而不是按照
  • 不同于,因为我试图访问模块内部,而不是公共模块接口

@jonaswillms谢谢-我确实看到了这个,但忘了在问题中链接它。
[[FunctionLocation]]
[[Scopes]]]
在访问权限方面有什么区别吗?您仍然无法通过编程方式(从页面或控制台中的代码)访问它们。他们更改了显示该内部属性的名称,但这不会改变任何内容。不过,devtools扩展可能可以做到这一点。这就是你想要创造的吗?@cxw确实令人失望。它似乎非常受限,只允许轻松定制,例如获取当前已检查的窗口和将自己的面板添加到devtools视图,但无法访问内部数据结构。似乎您应该将重点放在允许您访问运行时对象以及访问