Cuando uso jQuery Ajax, en la consola del navegador puedo ver que el objeto xhr tiene dos accesorios/campos en una notación extraña [corchetes dobles, no creo que signifique una matriz en este caso];
Primero, ¿qué son exactamente y segundo, puedo acceder a estos valores desde mi código 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, …}No, no puede acceder a ellos en su código.
La propiedad [[FunctionLocation]] que ve en Inspector se agrega en V8Debugger::internalProperties() en el código C++ del depurador, que usa otra función C++ V8Debugger::functionLocation() para recopilar información sobre la función. functionLocation() luego usa varias API de C++ específicas de V8, como v8::Function::GetScriptLineNumber() y GetScriptColumnNumber() para encontrar la información exacta. Todas las API descritas anteriormente están disponibles exclusivamente para código C++, no para código JavaScript. Si está tratando de realizar esta tarea en una plataforma como Node.js, entonces debería poder escribir un módulo nativo. Si no, entonces no tienes suerte.
Hay otra pregunta similar respondida aquí .
[[Scopes]] es una propiedad privada que las herramientas para desarrolladores de Chrome agregan y usan internamente, en C++, aquí en el código fuente . Muestra las variables que están en el ámbito de una función, es decir, a qué variables se puede acceder desde esa función.