我正在编写一个由50%Pure JavaScript类和50%Pure C ++类组成的node.js(0.12)库。 C ++类中的某些函数需要返回JavaScript类的实例。我想我需要将JavaScript类的构造函数存储在Persistent<Function>
中。假设我可以将构造函数作为参数,如何存储它们以供以后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
下的example中一样,您可以使用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);
}