簡體   English   中英

存儲JavaScript構造函數以備后用

[英]Storing a JavaScript constructor for later use

我正在編寫一個由50%Pure JavaScript類和50%Pure C ++類組成的node.js(0.12)庫。 C ++類中的某些函數需要返回JavaScript類的實例。 我想我需要將JavaScript類的構造函數存儲在Persistent<Function> 假設我可以將構造函數作為參數,那么如何存儲它們以供以后的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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM