Программный доступ к [[Scopes]] (переменным закрытия) через Chrome DevTools API или панель? (Не в точке останова)

В 2014 году было невозможно для JS-кода получить доступ к переменным внутри замыкания снаружи замыкания. С тех пор внутренние компоненты Chrome изменились и теперь используют [[Scopes]] вместо Closure.

Возможно ли сейчас (2018 г.) для Chrome DevTools программно читать [[Scopes]]? Если да, существует ли существующее расширение DevTools, которое делает это?

Пример использования: проверка переменных внутри модуля UMD, загруженного с помощью RequireJS. Я знаю, что могу сделать это в точке останова или 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
    
  • API chrome.devtools.inspectedWindow предоставляет файл evalметод, который может использовать inspect. Однако я не могу перейти от результатов inspect к [[Scopes]], как отмечалось выше.

Примечания

  • Публикация нового вопроса вместо того, чтобы поднимать вопрос 2014 года, как это было предложено этот мета-ответ
  • Отличается от этого вопроса, потому что я пытаюсь получить доступ к внутренним компонентам модуля, а не к общедоступному интерфейсу модуля.

person cxw    schedule 03.09.2018    source источник
comment
stackoverflow.com/questions/41146373/   -  person Jonas Wilms    schedule 03.09.2018
comment
@JonasWilms Спасибо - я видел это, но забыл указать ссылку в вопросе. Есть ли разница между [[FunctionLocation]] и [[Scopes]] с точки зрения прав доступа?   -  person cxw    schedule 03.09.2018
comment
Вы по-прежнему не можете получить к ним программный доступ (из кода на странице или в консоли). То, что они изменили имя, под которым они отображают это внутреннее свойство, ничего не меняет.   -  person Bergi    schedule 03.09.2018
comment
Однако расширение devtools может сделать это. Это то, что вы хотите создать?   -  person Bergi    schedule 03.09.2018
comment
@Bergi Да, если расширения devtools еще нет, я был бы рад создать его :). Однако я не могу найти доступ к [[Scopes]] в документах DevTools API, связанных с вопросом. Я надеюсь, что кто-то может указать мне на API, который мне не хватает.   -  person cxw    schedule 03.09.2018
comment
@cxw API devtools действительно разочаровывает. Это кажется очень ограниченным и позволяет только легкую настройку, такую ​​​​как получение текущих проверяемых окон и добавление собственных панелей в представление devtools, но нет доступа к внутренним структурам данных. Похоже, вам следует сосредоточиться на API отладчика, который позволяет получить доступ к объектам среды выполнения и также получить доступ к внутренним свойствам   -  person Bergi    schedule 03.09.2018