存储JavaScript构造函数以供以后使用

时间:2015-08-04 20:11:44

标签: javascript c++ node.js v8 node.js-addon

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

1 个答案:

答案 0 :(得分:1)

我想我找到了答案。就像在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);
}