Каковы переменные [[FunctionLocation]], [[Scopes]]: в консоли браузера - PullRequest
2 голосов
/ 01 августа 2020

При использовании jQuery Ajax в консоли браузера я вижу, что объект xhr имеет два свойства / поля в какой-то странной нотации [двойные квадратные скобки, не думайте, что в данном случае это означает массив];

Во-первых, что они собой представляют, а во-вторых, могу ли я получить доступ к этим значениям из моего JavaScript кода?

[[FunctionLocation]]: jquery-3.3.1.min.js:2
[[Scopes]]: Scopes[4]
0: Closure (w.Callbacks) {e: {…}, t: undefined, n: "", r: undefined, i: Array(0), …}
1: Closure {e: Window, r: document, i: ƒ, o: ƒ, a: ƒ, …}
2: Script {loc: Location, baseRestURL: "http://localhost:60123/MyVirtualDir"}
3: Global {parent: Window, opener: null, top: Window, length: 0, frames: Window, …}

введите описание изображения здесь

1 Ответ

2 голосов
/ 01 августа 2020

Нет, вы не можете получить к ним доступ в своем коде.

Свойство [[FunctionLocation]], которое вы видите в Inspector, добавлено в V8Debugger :: internalProperties () в коде C ++ отладчика, который использует другой Функция C ++ V8Debugger :: functionLocation () для сбора информации о функции. Затем functionLocation () использует ряд специфичных для V8 c C ++ API, таких как v8 :: Function :: GetScriptLineNumber () и GetScriptColumnNumber (), чтобы узнать точную информацию. Все описанные выше API доступны исключительно для кода C ++, а не кода JavaScript. Если вы пытаетесь выполнить sh эту задачу на платформе, например Node.js, тогда вы сможете написать собственный модуль. Если нет, то вам не повезло.

Есть еще один ответ на аналогичный вопрос здесь

[[Scopes]] является частной собственностью, которую Chrome инструменты разработчика добавить и использовать внутренне, в C ++, здесь, в источнике . Он отображает переменные, которые находятся в области видимости функции, т. Е. Какие переменные могут быть доступны из этой функции.

...