Хранение конструктора 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);
}