假设我有一个全局函数:
function Init()
{
var v = 10;
window.GlobalFunction = function()
{
// Global Function has access to v, because of closure
alert(v);
}
}
Init();
如何从 FireBug 控制台获取 v 的值?我可以在那里放置断点并查看值(value)。但这对我来说还不够。我想为第三方网站构建FireFox插件,所以我需要访问这个变量,但无法更改源代码。
最佳答案
如果v
像你说的那样是一个全局变量,那么你应该能够在控制台输入v
来获取它的值。
如果v
不是全局变量,那么您只能从包含它的函数内访问它。 JavaScript 是一种函数作用域语言,var
关键字表示该变量只能在当前作用域内访问。如果您不想使用断点/调试器,如果您无法修改源代码,并且源代码没有变量的 getter 方法,那么您可能会运气不好。
尝试在这里发挥创意,您也许可以根据 Init
的原型(prototype)或包含它的任何对象创建一个对象(例如,使用 new
关键字)并向您的对象版本添加 getter 函数。然后在您之前使用原始代码对象的任何地方使用新对象。
关于javascript - 如何从浏览器控制台访问存储在函数闭包中的javascript变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10272043/