我不是C++程序员,所以如果这是一个愚蠢的问题,请原谅我。
假设我想在V8中更改一个特定的行为。当然,我可以在deps/v8
中更改它,然后从源代码构建Node.js。但我正在寻找更简单的方法。
我可以写一个C++插件来覆盖V8中我想要的内容吗?
例如,我可以创建一个空的插件:吗
namespace MY_EMPTY_ADDON
{
void init(v8::Local<v8::Object> exports, v8::Local<v8::Object> module)
{
// empty
}
NODE_MODULE(MY_EMPTY_ADDON, init)
}
然后,在同一个文件中添加一些类似的内容:
namespace v8
{
namespace internal
{
// here I do my changes
}
}
这行得通吗?
否。C++不允许像JavaScript那样进行猴子补丁。不能从外部覆盖其他模块/库的函数。