V8是否具有Local <value> Get(Local <value>)等功能签名?

时间:2018-03-27 09:26:19

标签: javascript node.js v8 node.js-addon embedded-v8

我正在学习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

1 个答案:

答案 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