例如,如果我们假设以下代码:
var f = function() { return 'hello world' };
var x = 10;
var y = 314;
var g = function() {
var buf = [], xx = x;
while (xx--)
buf.append(f() + ' ');
return buf.join('');
}
我可以使用 g.toString()
将实际的“代码”作为 g
的字符串。然而,这并没有(显然)得到 f
和 x
—— g
闭包的成员(对不起,如果我没有完全使用这些术语正确。)
有什么方法可以查询函数的闭包内容吗?理想情况下,我可以获得如下对象:
{ 'f' : f, 'x': x } // note that `y` is not here
如果我必须使用 C++ 与 V8 进行特殊交互,那没关系——尽管以某种方式在纯 JavaScript 中这样做是最好的。
我知道这是一个有点奇怪的问题——但我确实有正当理由想要这个!
最佳答案
我找到了 this discussion V8 闭包实现的启发。听起来您正在寻找的 C++ 对象是 Context .
关于javascript - 在 node.js 或 V8 中获取闭包的所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7061596/