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