0

我正在编写一个由 50% 纯 JavaScript 类和 50% 纯 C++ 类组成的 node.js (0.12) 库。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();
}
4

1 回答 1

1

我想我找到了答案。就像在下面的示例中一样,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);
}
于 2015-08-04T22:52:35.683 回答