我正在学习Node C ++ Addon,发现以下代码可以在Node v8.9.3上运行
void test(const FunctionCallbackInfo<Value>& args) {
Isolate* isolate = args.GetIsolate();
Local<Object> obj = Local<Object>::Cast(args[0]);
Local<Value> v8_string = obj->Get(String::NewFromUtf8(isolate, "string"));
Local<Value> v8_int = obj->Get(String::NewFromUtf8(isolate, "int"));
Local<Value> v8_float = obj->Get(String::NewFromUtf8(isolate, "float"));
Local<Value> v8_bool = obj->Get(String::NewFromUtf8(isolate, "bool"));
char *c_str = (*String::Utf8Value(v8_string));
int c_int = v8_int->Int32Value();
double c_float = v8_float->NumberValue();
bool c_bool = v8_bool->BooleanValue();
printf("%s %d %lf %d\n",c_str, c_int, c_float, c_bool);
args.GetReturnValue().Set(obj);
}
但是我在V8 API文档中找不到与Local<Value> Get (Local<Value> key)
相同的函数声明。只发现了类似的内容。
MaybeLocal<Value> Object::Get (Local<Context> context, Local<Value> key)
那么,这个函数声明究竟在哪里。
V8 API DOC https://v8docs.nodesource.com/node-8.9/index.html
答案 0 :(得分:0)
就在这里:https://github.com/nodejs/node/blob/v8.x/deps/v8/include/v8.h#L3122
它已被弃用;你应该使用你找到的功能:
MaybeLocal<Value> Object::Get (Local<Context> context, Local<Value> key)
生成的文档显然(并且可以理解)不知道如何处理V8_DEPRECATE_SOON宏,但它确实列出了函数:https://v8docs.nodesource.com/node-8.9/db/d85/classv8_1_1_object.html#ac32361a713153dc3e1349c0c31481182