使用JSVM-API接口进行Wrapper object相关开发
================================

#### 简介

JSVM-API中，装箱类型(Wrapper object)判断相关接口支持通过不同API快速判断object的装箱类型。

#### 基本概念

在JSVM-API中，装箱类型相关接口提供快速判断5种装箱类型的能力。

#### 接口说明

| 接口 | 功能说明 |
| :-- | :-- |
| OH\_JSVM\_IsNumberObject | 判断是否是Number Object。 |
| OH\_JSVM\_IsBooleanObject | 判断是否是Boolean Object。 |
| OH\_JSVM\_IsBigIntObject | 判断是否是BigInt Object。 |
| OH\_JSVM\_IsStringObject | 判断是否是String Object。 |
| OH\_JSVM\_IsSymbolObject | 判断是否是Symbol Object。 |

#### 使用示例

JSVM-API接口开发流程参考[使用JSVM-API实现JS与C/C++语言交互开发流程](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/use-jsvm-process)，本文仅展示接口对应的C++代码。

#### \[h2\]使用接口判断是否是Number Object

cpp部分代码：

#include <string>

static JSVM\_Value WrapperObject(JSVM\_Env env, JSVM\_CallbackInfo info) {
    JSVM\_VM vm;
    OH\_JSVM\_GetVM(env, &vm);

    JSVM\_HandleScope handleScope;
    OH\_JSVM\_OpenHandleScope(env, &handleScope);
    std::string src = R"JS(new Number(42))JS";
    JSVM\_Value jsSrc;
    JSVM\_Script script;
    JSVM\_Value result;

    OH\_JSVM\_CreateStringUtf8(env, src.c\_str(), JSVM\_AUTO\_LENGTH, &jsSrc);
    OH\_JSVM\_CompileScript(env, jsSrc, nullptr, 0, true, nullptr, &script);
    OH\_JSVM\_RunScript(env, script, &result);
    bool isNumberObject = false;
    OH\_JSVM\_IsNumberObject(env, result, &isNumberObject);
    OH\_LOG\_INFO(LOG\_APP, "JSVM OH\_JSVM\_IsNumberObject: %{public}d\\n", isNumberObject);
    OH\_JSVM\_CloseHandleScope(env, handleScope);

    return nullptr;
}

static JSVM\_CallbackStruct param\[\] = {
    {.data = nullptr, .callback = WrapperObject},
};

static JSVM\_CallbackStruct \*method = param;

// wrapperObject方法别名，供JS调用
static JSVM\_PropertyDescriptor descriptor\[\] = {
    {"wrapperObject", nullptr, method++, nullptr, nullptr, nullptr, JSVM\_DEFAULT},
};

// 样例测试JS
const char \*srcCallNative = R"JS(wrapperObject();)JS";

预期输出：

JSVM OH\_JSVM\_IsNumberObject: 1