В 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 года, как это было предложено этот мета-ответ
- Отличается от этого вопроса, потому что я пытаюсь получить доступ к внутренним компонентам модуля, а не к общедоступному интерфейсу модуля.
[[FunctionLocation]]
и[[Scopes]]
с точки зрения прав доступа? - person cxw   schedule 03.09.2018[[Scopes]]
в документах DevTools API, связанных с вопросом. Я надеюсь, что кто-то может указать мне на API, который мне не хватает. - person cxw   schedule 03.09.2018