存储 JavaScript 构造函数供以后使用
Storing a JavaScript constructor for later use
我正在编写一个节点.js(0.12(库,该库由50%的纯JavaScript类和50%的纯C++类组成。C++类中的某些函数需要返回 JavaScript 类的实例。我想我需要将 JavaScript 类的构造函数存储在 Persistent<Function>
s 中,假设我可以将构造函数作为参数获取,如何存储它们以供以后NewInstance()
使用。
.JS
function MyType()
{
this.a = 0;
};
native.store (MyType)
C++
void Wrapper::store (const FunctionCallbackInfo<Value>& args)
{
// Need to store args[0] as MyTypeConstructor for later
}
void Wrapper::use (const FunctionCallbackInfo<Value>& args)
{
Isolate* isolate = Isolate::GetCurrent();
HandleScope scope (isolate);
auto ctor = Local<Function>::New
(isolate, MyTypeConstructor);
ctor->NewInstance();
}
我想
我找到了答案。就像在MyObject::Init
下面的示例中一样,您可以使用 Reset
函数将本地函数绑定到持久函数。
Persistent<Function> MyTypeConstructor;
void Wrapper::store (const FunctionCallbackInfo<Value>& args)
{
Isolate* isolate = Isolate::GetCurrent();
HandleScope scope (isolate);
auto ctor = Local<Function>::Cast (args[0]);
MyTypeConstructor.Reset (isolate, ctor);
}
相关文章:
- "error: no matching function for call to"构造函数错误
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 为什么在C++中使用私有复制构造函数与删除复制构造函数
- 选择要调用的构造函数
- 如何委托派生类使用其父构造函数?
- 构造函数正在调用一个使用当前类类型的函数
- 没有用于初始化C++中的变量模板的匹配构造函数
- 初始化具有非默认构造函数的std::数组项的更好方法
- 当从函数参数中的临时值调用复制构造函数时
- 在c++构造函数中使用随机字符串生成器
- 一对向量构造函数:初始值设定项列表与显式构造
- 从构造函数抛出异常时如何克服内存泄漏
- 我不明白为什么我声明一个空的内部结构并将其传递给构造函数
- 继承:构造函数,初始化C++11中基类的类C数组成员
- 具有默认模板类型的默认构造函数的类型推导
- 使用dynamic_cast和构造函数时出错
- 在V8 javascript引擎中,如何为每个实例创建一个重新使用ObjectTemplate的构造函数
- 存储 JavaScript 构造函数供以后使用