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

В 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}) per this . Это приближает меня, но не к [[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 , как предлагает этот мета-ответ
  • Отличается от этим вопросом , потому что я пытаюсь получить доступ к внутренним компонентам модуля, а не к общему интерфейсу модуля
...