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

Storing a JavaScript constructor for later use

本文关键字:JavaScript 构造函数 存储      更新时间:2023-10-16

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

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