5

使用 jQuery Ajax 时,在浏览器控制台中,我可以看到 xhr 对象有两个 props / 字段,用一些奇怪的符号表示 [双方括号,在这种情况下不认为它表示数组];

首先,它们到底是什么,其次,我可以从我的 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, …}

在此处输入图像描述

4

1 回答 1

3

不,您无法在代码中访问它们。

您在 Inspector 中看到的 [[FunctionLocation]] 属性已添加到调试器 C++ 代码的 V8Debugger::internalProperties() 中,该代码使用另一个 C++ 函数 V8Debugger::functionLocation() 来收集有关该函数的信息。functionLocation() 然后使用许多 V8 特定的 C++ API,例如 v8::Function::GetScriptLineNumber() 和 GetScriptColumnNumber() 来找出确切的信息。上述所有 API 仅可用于 C++ 代码,而不是 JavaScript 代码。如果您尝试在 Node.js 之类的平台上完成此任务,那么您应该能够编写原生模块。如果没有,那么你就不走运了。

这里 回答了另一个类似的问题

[[Scopes]] 是 Chrome 开发者工具在内部添加和使用的私有属性,在 C++ 中,在源代码中。它显示函数范围内的变量,即可以从该函数访问哪些变量。

于 2020-08-01T08:54:26.953 回答