gpt4 book ai didi

c++ - 是否可以通过 V8 插件读取函数闭包?

转载 作者:搜寻专家 更新时间:2023-10-31 01:34:30 25 4
gpt4 key购买 nike

我想用 C++ 编写一个 Node.js V8 插件,让我可以访问函数闭包。

像这样:

const myAddon = require('./build/Release/addon');

const counter = (() => {
let i = 0;
return () => ++i;
})();

counter(); // 1
counter(); // 2

const closure = myAddon(counter);
console.log(closure.i); // prints "3"

这可能吗?此信息存储在 V8 engine 上的位置?

最佳答案

不,那是不可能的。这是一个特点。它允许引擎以各种方式优化局部变量,包括完全消除它们。如果没有这种能力,JavaScript 程序的运行速度将比现在慢得多。您可以获得的最好的是调试器接口(interface)提供的内容,而这只是尽可能多地重建信息的最佳尝试。根据函数的优化方式,它可能不完整甚至是错误的。

此外,闭包是 JavaScript 中表达正确封装的唯一方式。这样的库会破坏该属性。

关于c++ - 是否可以通过 V8 插件读取函数闭包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39399717/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com