我目前正在使用 C++ 编写一个 node.js 插件node-addon-api (Napi)
。从我在不同的文档和教程中看到的,每个对象都必须扩展Napi::ObjectWrap
才能被视为 js 对象。然后可以在js中调用构造函数。但是,如果我希望这个特定对象仅由另一个对象提供并将 js 构造函数设为私有怎么办?考虑到这种情况
class Provided: public Napi::ObjectWrap<Provided> {
public:
// Init function for exports
static Init(Napi::Env, Napi::Object exports);
// what if I want my constructor to have a value instead of a CallbackInfo and only allow instantiation from c++ ?
Provided(std::string value);
private:
std::string m_value;
};
class MyProvider: public Napi::ObjectWrap<MyProvider> {
public:
// Init function for exports
static Init(Napi::Env, Napi::Object exports) {
Napi::Function func = DefineClass(env, "provider", {InstanceMethod("getProvided", &MyProvider::GetProvided)});
constructor = Napi::Persistent(func);
constructor.SupressDestruct();
exports.Set("Provider", func);
return exports;
}
MyProvider(Napi::CallbackInfo const&): Napi::ObjectWrap<MyProvider>(info) {
this->m_provided = Provided("my value");
}
private:
Provided m_provided;
static Napi::FunctionReference constructor;
}
如何能够Napi::CallbackInfo
在提供的构造函数中没有