Хранение конструктора JavaScript для последующего использования

Я пишу библиотеку node.js (0.12), состоящую из 50% чистых классов JavaScript и 50% чистых классов C++. Определенные функции в классах C++ должны возвращать экземпляры классов JavaScript. Я полагаю, что мне нужно хранить конструкторы классов JavaScript в Persistent<Function>s. Предполагая, что я могу получить конструкторы в качестве аргументов, как я могу сохранить их на потом NewInstance()ING.

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 ответ

Решение

Я думаю, что нашел ответ. Как в примере под 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);
}
Другие вопросы по тегам