javascript - 在 node.js 或 V8 中获取闭包的所有值

标签 javascript node.js v8

例如,如果我们假设以下代码:

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 的字符串。然而,这并没有(显然)得到 fx —— 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/

相关文章:

javascript - 问题 removeChild of many elements

node.js - NPM 和 jsdom 错误加载

c++ - 如何在 v8 中创建另一个线程

javascript - 是否可以强制 Node.js 对代码进行 JIT 编译?

JavaScript:V8 问题:小整数是池化的吗?

javascript - 是否有用于 localStorage 的 Javascript 库来模拟 SQLite

javascript - 将数据发布到 JsonP

javascript - websocket + vuejs : screen flickering, 可见 mustache 代码

javascript - 如何在 Jade 中创建可重用的标记

node.js - npm install 出现 'npm ERR! code ENOTFOUND' 错误