例如,如果我们假设以下代码:
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()获得实际的“code”作为一个g的字符串.然而,这显然不会得到f和x的关闭g的成员(如果我没有正确使用这些术语,那么抱歉)
有什么方法来查询一个函数关闭它的内容吗?理想情况下,我可以得到一个对象,如:
{ 'f' : f,'x': x } // note that `y` is not here
如果我不得不放弃C与V8的特殊交互,那没关系 – 尽管以纯粹的JavaScript做的这一切将是最好的.
我知道这是一个奇怪的问题 – 但我确实有一个合理的理由想要这个!