什么是变量 [[FunctionLocation]]、[[Scopes]]:在浏览器控制台中
What are the variables [[FunctionLocation]], [[Scopes]]: in the Browser Console
当使用 jQuery Ajax 时,在浏览器控制台中我可以看到 xhr 对象有两个 props / fields 在一些奇怪的符号中 [双方括号,不要认为它意味着数组在这种情况];
首先,它们到底是什么,其次,我可以从我的 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, …}
不,您不能在代码中访问它们。
你在 Inspector 中看到的 [[FunctionLocation]] 属性 是在调试器的 C++ 代码中的 V8Debugger::internalProperties() 中添加的,它使用另一个 C++ 函数 V8Debugger::functionLocation() 来收集有关功能的信息。 functionLocation() 然后使用许多特定于 V8 的 C++ API,例如 v8::Function::GetScriptLineNumber() 和 GetScriptColumnNumber() 来找出准确的信息。
上述所有 API 仅适用于 C++ 代码,不适用于 JavaScript 代码。如果你想在像 Node.js 这样的平台上完成这个任务,那么你应该能够编写一个本地模块。如果没有,那你就倒霉了。
[[Scopes]] 是私有 属性,Chrome 开发人员工具在 C++ 中添加和内部使用,here in the source。它显示函数范围内的变量,即可以从该函数访问哪些变量。
当使用 jQuery Ajax 时,在浏览器控制台中我可以看到 xhr 对象有两个 props / fields 在一些奇怪的符号中 [双方括号,不要认为它意味着数组在这种情况];
首先,它们到底是什么,其次,我可以从我的 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, …}
不,您不能在代码中访问它们。
你在 Inspector 中看到的 [[FunctionLocation]] 属性 是在调试器的 C++ 代码中的 V8Debugger::internalProperties() 中添加的,它使用另一个 C++ 函数 V8Debugger::functionLocation() 来收集有关功能的信息。 functionLocation() 然后使用许多特定于 V8 的 C++ API,例如 v8::Function::GetScriptLineNumber() 和 GetScriptColumnNumber() 来找出准确的信息。 上述所有 API 仅适用于 C++ 代码,不适用于 JavaScript 代码。如果你想在像 Node.js 这样的平台上完成这个任务,那么你应该能够编写一个本地模块。如果没有,那你就倒霉了。
[[Scopes]] 是私有 属性,Chrome 开发人员工具在 C++ 中添加和内部使用,here in the source。它显示函数范围内的变量,即可以从该函数访问哪些变量。