如何从FunctionCallbackInfo外部的Function中读取数据值?

时间:2019-04-06 23:20:15

标签: v8

当我创建这样的函数时:

v8::Function::New(<Isolate>, <C_Function>, <Data_Value>);

我提供的Data_Value在许多事情上都非常有用,并且在调用函数时可以使用FunctionCallbackInfo->GetData()之类的东西来访问它。

但是我找不到在其他情况下找回此data的方法。假设我将该函数存储在一个Persistent对象中,然后我想阅读当前绑定到哪个data。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我认为它不是通过API公开的。

但是还有一种选择:

  1. 手动构造一个v8::FunctionTemplate
  2. 设置其->InstanceTemplate()->SetInternalFieldCount(num_fields)
  3. 使用v8::Function从模板中获取template->GetFunction(context)
  4. 现在您应该拥有function->InternalFieldCount() == num_fields
  5. 您可以使用function->SetInternalField(index, value)function->GetInternalField(index)存储所需的任何数据。

有关完整示例,请在V8的test-api.cc中搜索“ SetInternalFieldCount”。