Как получить доступ к значениям из «Области функций» «Закрытие» на панели «Смотреть» инструмента разработчика Chrome?

У меня есть сложный объект javascript, созданный каким-то сторонним инструментом, который выглядит так (внутри панели Chrome Developer Tools Watch):

доступ к значениям из ‹области действия› закрытия в панели просмотра инструмента разработчика Chrome

Мне интересно прочитать эти атрибуты text и value объекта i. Я никогда раньше не видел такого <function scope>. В таких случаях,

Как получить доступ к значениям из Closure <function scope> на панели Watch инструмента разработчика Chrome?

Или это невозможно?


person Zameer Ansari    schedule 12.07.2016    source источник
comment
@vsharper возвращает <not available>, но для arg.layer.getElements()[0].coordinates.prototype также дает то же самое Closure   -  person Zameer Ansari    schedule 12.07.2016
comment
devtoolsecrets.com/secret/ firebug может делать то, что ты хочешь   -  person Carter Cole    schedule 20.03.2017
comment
@CarterCole Хорошо, но как?   -  person Zameer Ansari    schedule 21.03.2017


Ответы (2)


Замыкание — это объект особого типа, который сочетает в себе две вещи: функцию и среду, в которой эта функция была создана. Среда состоит из любых локальных переменных, которые находились в области видимости во время создания замыкания.

Источник: закрытия MDN

Объект i, который вы видите, был создан в какой-то момент в прошлом, а функция, в которой вы остановились, была создана внутри той же внешней функции, которая создала объект. Когда внутренняя функция обращается к переменным внешней функции, создается замыкание, чтобы «запомнить» их.

Вы не можете напрямую обращаться к закрытым переменным.

person Gideon Pyzer    schedule 12.07.2016

Вы можете изменить значение даты следующим образом:

  • щелкните правой кнопкой мыши свою переменную в Scope (справа от вкладки источника).
  • выберите сохранить объект как глобальную переменную.
  • теперь вы перейдете к консоли и получите новую глобальную переменную temp1. (1 будет увеличено, если вы будете делать это повторно)
  • type temp1.setTime([your-date-value]) изменит его значение.

(подтверждено в версии Chrome 88)

person jiogai    schedule 03.03.2021