获取v8中被调用方的方法名称

时间:2019-07-26 13:30:01

标签: v8

由于nodejs> = 10 FunctionCallbackInfo :: Callee已被弃用(https://github.com/nodejs/nan/blob/master/CHANGELOG.md)。我需要更新使用v8的c ++代码,其中使用了被调用的方法名。现在如何获得?

建议改用info.Data()。但是我不遵循如何从中获取方法名称。我猜是这样的:

void GetData(IN const Nan::FunctionCallbackInfo<v8::Value>& info)
{
    v8::Local<v8::Function> data = v8::Local<v8::Function>::Cast(info.Data());

    ....

}

如何从data获取方法名称?从文档看,它似乎无法再完成(https://github.com/nodejs/nan/blob/master/doc/methods.md):

  

注意:FunctionCallbackInfo :: Callee在10.0.0之后已在Node.js中删除,因为在V8中已弃用该函数。考虑使用info.Data()传递您需要的任何信息。

那么,如果没有提供其他信息,就无法获得被叫者的名字吗?

1 个答案:

答案 0 :(得分:0)

这可以解决问题:

    v8::Local<v8::Function> out;
    out = v8::Local<v8::Function>::Cast(info.Data());
    v8::String::Utf8Value callee(out->GetName()->ToString());